Skip to content

Conversation

@LambdAurora
Copy link
Contributor

@LambdAurora LambdAurora commented Jul 9, 2025

This pull request aims to fix some cases in LMDBJava where the BufferProxy's out method resulting buffer is ignored, especially in Dbi.

I've discovered this issue while attempting to write a new implementation of BufferProxy to use Java 22's Function Foreign Memory API in preparation of Java 25's depreciation of various methods in Unsafe invalidating most fast BufferProxy implementations. The implementation failed to pass some tests since in the out method I returned a new ByteBuffer (taking advantage of MemorySegment.ofAddress().asByteBuffer()).

After further investigation, I've found that ByteArrayProxy also relies on returning a different "buffer" from the one that's given as an argument, for which I've added new tests that reproduce the behavior of DbiTest.customComparator and DbiTest.dbiWithComparatorThreadSafety using byte arrays instead. ByteArrayProxy led me to think that returning a different buffer in out is an allowed and intended behavior.

This fix is important for users of ByteArrayProxy and allows for a stop-gap external implementation of BufferProxy using the FFM API to allow users to upgrade to Java 25 when the time comes until a proper resolution to #42 comes around.

TODO: address failing dbiWithComparatorThreadSafetyByteArray test.
This proves to be more reliable than Agreno's UnsafeBuffers.
@at055612
Copy link
Collaborator

Regarding the upgrade to Java 25, see #259

I will however try and verify and merge this PR as soon as possible.

@codecov
Copy link

codecov bot commented Oct 26, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 89.33%. Comparing base (0b741e8) to head (58a489f).

Additional details and impacted files
@@             Coverage Diff              @@
##             master     #255      +/-   ##
============================================
+ Coverage     88.60%   89.33%   +0.72%     
- Complexity      409      413       +4     
============================================
  Files            32       32              
  Lines          1483     1481       -2     
  Branches        124      124              
============================================
+ Hits           1314     1323       +9     
+ Misses          100       88      -12     
- Partials         69       70       +1     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@at055612 at055612 merged commit 43ac84f into lmdbjava:master Oct 26, 2025
21 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants