Change back to getLong: why ?
See original GitHub issueHi to all,
This is more a clarification request than an issue per se:
-
we’re currently evaluating lmbdjava and while we didn’t experience any problem on OS X and Linux, we had some random and rather frequent crashes on Windows (access violations while retrieving buffers or keys). After investigation, we couldn’t really pinpoint anything wrong with our code or discern any general rule as to the crashes’ cause (multithreading, memory, etc.). We’re using JDK 8 but using other JDKs did not help.
-
we finally managed to reproduce the problem consistently using
ByteBufferProxy.PROXY_SAFE
, creating a large env size (> 1Gb) and a bit of our code in a JUnit set to 2048m max heap size (letting the default buffer,PROXY_OPTIMAL
, makes it much harder to crash, but it crashes eventually – the same with Agrona buffers or even byte arrays). Our piece of code does not really stress lmdb, nor fills the map or anything extreme. -
then I saw issue 97 and your change from
getLong
togetAddress
in the buffer proxies, and decided to give it another go. It improved things a lot. Early tests seem to indicate that the problem went away, at least withByteBufferProxy.PROXY_SAFE
.
Which leads to my question:
- since we originally had the problem with
OPTIMAL
proxy versions and you reverted back to usinggetLong
for these, the problem is still there unless we write our own proxy. Which we can do, of course, but I wanted to know if there was a specific issue that made you revert your changes?
Thanks!
Issue Analytics
- State:
- Created 5 years ago
- Comments:15 (15 by maintainers)
Top GitHub Comments
How did you go with this? Can we close the ticket if you’re sorted it out?
Yes you can, thanks. I’ll you informed as soon as we switch to 0.6.3.