Skip to content
Open
Show file tree
Hide file tree
Changes from 61 commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
5699e03
Overhaul MMapDirectory with MemoryMappedViewAccessor, #1013, #1151
paulirwin Apr 20, 2026
744e377
Fix namespace and add more unit tests
paulirwin Apr 20, 2026
e9b013e
Fix Copilot's PR feedback
paulirwin Apr 20, 2026
f1a2dc2
PR feedback and code cleanup
paulirwin Apr 20, 2026
3a90ea4
Refactor View into Chunk support
paulirwin Apr 20, 2026
16530fd
Address PR feedback: nest MMapIndexInput, share MemoryMappedFile acro…
paulirwin Apr 24, 2026
60b5f68
Code cleanup and fix field naming error
paulirwin Apr 24, 2026
3409859
Document why MapChunks doesn't allocate a trailing zero-length sentinel
paulirwin Apr 24, 2026
dc20050
Fix Xml doc comment reference
paulirwin Apr 24, 2026
60b5723
Remove per-file mapping cache for upstream Java parity
paulirwin Apr 25, 2026
c476b29
Switch MMapIndexInput to direct-pointer fast path with cached chunk p…
paulirwin Apr 26, 2026
e94fcd8
MMapDirectory follow-up review fixes
paulirwin Apr 26, 2026
0208ce7
Pass capacity: 0 to MemoryMappedFile.CreateFromFile, drop the #1090 r…
paulirwin Apr 26, 2026
2a56503
Open the file with FileShare.ReadWrite | Delete on Windows for delete…
paulirwin Apr 26, 2026
d66ebad
Use string interpolation
paulirwin Apr 29, 2026
a8815fd
Capitalize BasePtr and Length
paulirwin Apr 29, 2026
7d4cc27
Improve exception handling
paulirwin Apr 29, 2026
2a5a35e
Inline ReadIntXX slow path; split ReadBytes into ref-byte core
paulirwin Apr 29, 2026
1768ec4
Allow MMapDirectory+Chunk.BasePtr/Length in private-field-name scan
paulirwin Apr 30, 2026
06d8d0a
Fix capacity race on .NET Framework
paulirwin Apr 30, 2026
d76b933
Add comments about FileShare modes
paulirwin Apr 30, 2026
025b63a
Address PR #1267 review: FileStream ownership + exception-handling cl…
paulirwin Jun 15, 2026
acbf589
Add MockDirectoryWrapper leak-gate test for MMap slice/clone paths
paulirwin Jun 15, 2026
dfa4da6
Reclaim MemoryMappedViewAccessor stranded by cross-thread Dispose (#1…
paulirwin Jun 16, 2026
483b4bc
Validate slicer path name in MMapDirectory.CreateSlicer (#1357 integr…
paulirwin Jun 16, 2026
e720bd8
Use SafeHandle refcount as the chunk drain barrier in MMapDirectory
paulirwin Jun 17, 2026
b19aecb
Extract the native read engine into Support/UnsafeChunkIndexInput
paulirwin Jun 17, 2026
776ee99
Simplify verbose implementation comments in MMapDirectory and UnsafeC…
paulirwin Jun 17, 2026
597af73
Rename NoChunk const to NO_CHUNK to satisfy TestPrivateFieldNames
paulirwin Jun 17, 2026
5b29c65
Add test: same-thread owner Dispose while sibling clones read concurr…
paulirwin Jun 17, 2026
96569e4
Replace finalizer with lock-free hazard reclaimer (#1013, #1151)
paulirwin Jun 19, 2026
4a14931
Optimize hazard reclaimer: asymmetric fence + devirtualized fence-fre…
paulirwin Jun 19, 2026
8df37f1
Fix ARM64 use-after-free: make hazard Exit a release store
paulirwin Jun 19, 2026
a41864c
Rename to DrainReclaimer; address review findings
paulirwin Jun 20, 2026
0acaaa6
Add DrainReclaimer unit tests; alphabetize feature constants
paulirwin Jun 20, 2026
6ac506f
Enable nullable on DrainReclaimer
paulirwin Jun 20, 2026
06f0502
Test deterministic cleanup on last-reader drain; refresh stale comments
paulirwin Jun 20, 2026
5459610
Make DrainReclaimer.Close block until drained (synchronous teardown)
paulirwin Jun 22, 2026
6200937
Tag TestSharedMappingLifecycle [LuceneNetSpecific]; rename master->pr…
paulirwin Jun 22, 2026
a9c7562
Whitelist DrainReclaimer+Slot.Depth/OnEnterForTest in TestPrivateFiel…
paulirwin Jun 22, 2026
d853806
Remove dead ConcurrentDictionaryExtensions; rename memory-barrier fea…
paulirwin Jun 22, 2026
9dfe8bb
Fix cross-thread Dispose NRE: do not null readBase under a live reader
paulirwin Jun 22, 2026
1d8e520
Mark test nightly
paulirwin Jul 6, 2026
4ff773d
Refactor local slow methods
paulirwin Jul 6, 2026
64feeba
Relocate UnsafeChunkIndexInput
paulirwin Jul 6, 2026
5da315d
Rename ThrowIfDisposed to EnsureOpen
paulirwin Jul 6, 2026
ab3293c
Optimize pos check and change exception type
paulirwin Jul 6, 2026
7c0c786
Prevent overflow with planetary-scale int64 position
paulirwin Jul 6, 2026
1a965a3
Add assert to EnsureCurrentChunk
paulirwin Jul 6, 2026
57769f8
More PR feedback addressed: lock, exception filter, argument validation
paulirwin Jul 6, 2026
13eeb3a
Test fixes
paulirwin Jul 7, 2026
1a5035f
PR feedback: exception handling and cleanup
paulirwin Jul 7, 2026
515f32e
Remove outdated assertion
paulirwin Jul 7, 2026
cdf5d8a
Fix conflict with Append; remove polyfill and use Concat
paulirwin Jul 7, 2026
59719b6
Move DrainReclaimer and clean up local method to match others
paulirwin Jul 7, 2026
45f85ef
PR feedback: dispose of ManualResetEventSlims, misc
paulirwin Jul 7, 2026
5f2d323
Fix api consistency exclusion after rename
paulirwin Jul 7, 2026
50dc5cc
Lucene.Net.Store.UnsafeChunkIndexInput: (ReadInt16() + ReadInt32()): …
NightOwl888 Jul 8, 2026
022b2b0
Lucene.Net.Store.UnsafeChunkIndexInput::SkipBytes(): Optimized past E…
NightOwl888 Jul 8, 2026
1a20800
Lucene.Net.Store.UnsafeChunkIndexInput::ReadBytesCore(): Fixed potent…
NightOwl888 Jul 8, 2026
3961cb5
Directory.Build.props: Removed FEATURE_IENUMERABLE_APPEND
NightOwl888 Jul 8, 2026
65eaf21
PR feedback: don't rethrow exception if null; range checks
paulirwin Jul 8, 2026
dc201cb
Revert seek range check
paulirwin Jul 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions Directory.Build.targets
Original file line number Diff line number Diff line change
Expand Up @@ -104,14 +104,15 @@
<PropertyGroup Condition=" '$(TargetFramework)' == 'netstandard2.1' Or $(TargetFramework.StartsWith('netcoreapp3.')) Or $(TargetFramework.StartsWith('net5.')) Or $(TargetFramework.StartsWith('net6.')) Or $(TargetFramework.StartsWith('net7.')) Or $(TargetFramework.StartsWith('net8.')) Or $(TargetFramework.StartsWith('net9.')) Or $(TargetFramework.StartsWith('net10.')) ">

<DefineConstants>$(DefineConstants);FEATURE_ARRAY_FILL</DefineConstants>
<DefineConstants>$(DefineConstants);FEATURE_CONDITIONALWEAKTABLE_ENUMERATOR</DefineConstants>
<DefineConstants>$(DefineConstants);FEATURE_CONDITIONALWEAKTABLE_ADDORUPDATE</DefineConstants>
<DefineConstants>$(DefineConstants);FEATURE_CONDITIONALWEAKTABLE_ENUMERATOR</DefineConstants>
<DefineConstants>$(DefineConstants);FEATURE_ENCODING_GETSTRING_READONLYSPAN</DefineConstants>
<DefineConstants>$(DefineConstants);FEATURE_INTERLOCKED_MEMORYBARRIERPROCESSWIDE</DefineConstants>
<DefineConstants>$(DefineConstants);FEATURE_MEMORYMARSHAL_CREATEREADONLYSPAN</DefineConstants>
<DefineConstants>$(DefineConstants);FEATURE_NUMBER_PARSE_READONLYSPAN</DefineConstants>
<DefineConstants>$(DefineConstants);FEATURE_QUEUE_TRYDEQUEUE_TRYPEEK</DefineConstants>
<DefineConstants>$(DefineConstants);FEATURE_STREAM_READ_SPAN</DefineConstants>
<DefineConstants>$(DefineConstants);FEATURE_STRINGBUILDER_APPEND_READONLYSPAN</DefineConstants>
<DefineConstants>$(DefineConstants);FEATURE_QUEUE_TRYDEQUEUE_TRYPEEK</DefineConstants>

</PropertyGroup>

Expand Down
2 changes: 2 additions & 0 deletions Lucene.Net.sln.DotSettings
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
<s:Boolean x:Key="/Default/UserDictionary/Words/=Coord/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=csharpsquid/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=LUCENENET/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=mmap/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=refcounted/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=stopword/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=stopwords/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=streamutils/@EntryIndexedValue">True</s:Boolean>
Expand Down
8 changes: 8 additions & 0 deletions src/Lucene.Net.Tests._J-S/Lucene.Net.Tests._J-S.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,14 @@
<Compile Include="..\Lucene.Net.Tests\Support\**\*.cs" LinkBase="Support" Exclude="..\Lucene.Net.Tests\Support\ExceptionHandling\**\*" />
<Compile Include="..\Lucene.Net.Tests\Util\TestNumericUtils.cs" Link="Util\TestNumericUtils.cs" />
<EmbeddedResource Include="..\Lucene.Net.Tests\Store\LUCENENET521.zip" Link="Store\LUCENENET521.zip" />
<!--
3.x CFS index fixtures, re-linked into the Store namespace so
TestMultiMMap can exercise the MMapDirectory IndexInputSlicer
OpenFullSlice path used by CompoundFileDirectory when reading
CFS files from 3.x indexes.
-->
<EmbeddedResource Include="..\Lucene.Net.Tests\Index\index.30.cfs.zip" Link="Store\index.30.cfs.zip" />
<EmbeddedResource Include="..\Lucene.Net.Tests\Index\index.31.cfs.zip" Link="Store\index.31.cfs.zip" />
</ItemGroup>

<ItemGroup>
Expand Down
2,301 changes: 2,226 additions & 75 deletions src/Lucene.Net.Tests/Store/TestMultiMMap.cs

Large diffs are not rendered by default.

Loading
Loading