Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
20 changes: 20 additions & 0 deletions pkg/data/diagon/bridge.go
Original file line number Diff line number Diff line change
Expand Up @@ -1847,11 +1847,24 @@ func (s *Shard) Commit() error {
s.mu.Lock()
defer s.mu.Unlock()

// First commit: flush buffered docs + write segments_N
if !C.diagon_commit(s.writer) {
errMsg := C.GoString(C.diagon_last_error())
return fmt.Errorf("commit failed: %s", errMsg)
}

// Wait for background merges triggered by the commit
C.diagon_wait_for_merges(s.writer)

// Persist merge results to segments_N (lightweight — no flush, no re-merge)
if !C.diagon_commit_merge_results(s.writer) {
errMsg := C.GoString(C.diagon_last_error())
return fmt.Errorf("commit merge results failed: %s", errMsg)
}

// Trigger cascading merges for next cycle
C.diagon_maybe_merge(s.writer)

s.logger.Debug("Committed changes")
return nil
}
Expand Down Expand Up @@ -1881,6 +1894,13 @@ func (s *Shard) Refresh() error {
return fmt.Errorf("commit failed during refresh: %s", errMsg)
}

// Wait for background merges and persist results
C.diagon_wait_for_merges(s.writer)
if !C.diagon_commit_merge_results(s.writer) {
errMsg := C.GoString(C.diagon_last_error())
return fmt.Errorf("commit merge results failed during refresh: %s", errMsg)
}

// Close old reader and searcher
if s.searcher != nil {
C.diagon_free_index_searcher(s.searcher)
Expand Down
2 changes: 1 addition & 1 deletion src/3rdparty/diagon
Submodule diagon updated 63 files
+16 −0 src/core/CMakeLists.txt
+24 −0 src/core/include/diagon/c_api/diagon_c_api.h
+163 −0 src/core/include/diagon/codecs/BinaryDocValuesReader.h
+139 −0 src/core/include/diagon/codecs/BinaryDocValuesWriter.h
+103 −0 src/core/include/diagon/codecs/SortedDocValuesReader.h
+93 −0 src/core/include/diagon/codecs/SortedDocValuesWriter.h
+108 −0 src/core/include/diagon/codecs/SortedNumericDocValuesReader.h
+92 −0 src/core/include/diagon/codecs/SortedNumericDocValuesWriter.h
+108 −0 src/core/include/diagon/codecs/SortedSetDocValuesReader.h
+96 −0 src/core/include/diagon/codecs/SortedSetDocValuesWriter.h
+65 −0 src/core/include/diagon/document/Field.h
+16 −0 src/core/include/diagon/index/DocumentsWriterPerThread.h
+24 −3 src/core/include/diagon/index/IndexWriter.h
+24 −21 src/core/include/diagon/index/SegmentReader.h
+45 −0 src/core/src/c_api/diagon_c_api.cpp
+202 −0 src/core/src/codecs/BinaryDocValuesReader.cpp
+192 −0 src/core/src/codecs/BinaryDocValuesWriter.cpp
+212 −0 src/core/src/codecs/SortedDocValuesReader.cpp
+191 −0 src/core/src/codecs/SortedDocValuesWriter.cpp
+203 −0 src/core/src/codecs/SortedNumericDocValuesReader.cpp
+170 −0 src/core/src/codecs/SortedNumericDocValuesWriter.cpp
+232 −0 src/core/src/codecs/SortedSetDocValuesReader.cpp
+214 −0 src/core/src/codecs/SortedSetDocValuesWriter.cpp
+40 −0 src/core/src/document/Field.cpp
+184 −2 src/core/src/index/DocumentsWriterPerThread.cpp
+33 −0 src/core/src/index/IndexWriter.cpp
+174 −32 src/core/src/index/SegmentMerger.cpp
+124 −0 src/core/src/index/SegmentReader.cpp
+7 −0 tests/CMakeLists.txt
+6 −1 tests/integration/BasicEndToEndTest.cpp
+6 −1 tests/integration/Lucene104QueryTest.cpp
+597 −0 tests/unit/codecs/BinaryDocValuesTest.cpp
+648 −0 tests/unit/codecs/DocValuesIntegrationTest.cpp
+406 −0 tests/unit/codecs/DocValuesMergeTest.cpp
+7 −1 tests/unit/codecs/NumericDocValuesIntegrationTest.cpp
+677 −0 tests/unit/codecs/SortedDocValuesTest.cpp
+560 −0 tests/unit/codecs/SortedNumericDocValuesTest.cpp
+662 −0 tests/unit/codecs/SortedSetDocValuesTest.cpp
+6 −2 tests/unit/index/CacheHelperTest.cpp
+6 −1 tests/unit/index/ConcurrentMergeTest.cpp
+5 −1 tests/unit/index/DeletionIntegrationTest.cpp
+4 −1 tests/unit/index/DirectoryReaderTest.cpp
+5 −2 tests/unit/index/ForceMergeTest.cpp
+6 −1 tests/unit/index/IndexWriterIntegrationTest.cpp
+5 −2 tests/unit/index/IndexWriterRollbackTest.cpp
+6 −1 tests/unit/index/IndexWriterTest.cpp
+6 −1 tests/unit/index/MaybeMergeTest.cpp
+5 −4 tests/unit/index/MemoryLeakTest.cpp
+217 −0 tests/unit/index/MergeCommitPointTest.cpp
+6 −1 tests/unit/index/NormsIntegrationTest.cpp
+6 −2 tests/unit/index/ReaderReopenTest.cpp
+6 −1 tests/unit/index/SegmentInfosReadTest.cpp
+4 −1 tests/unit/index/SegmentReaderTest.cpp
+5 −1 tests/unit/search/BM25CorrectnessTest.cpp
+6 −1 tests/unit/search/BM25NormsIntegrationTest.cpp
+12 −6 tests/unit/search/BM25PerformanceGuard.cpp
+4 −1 tests/unit/search/IndexSearcherTest.cpp
+6 −1 tests/unit/search/PhraseQueryTest.cpp
+6 −1 tests/unit/search/QueryCorrectnessTest.cpp
+6 −1 tests/unit/search/QueryEdgeCasesTest.cpp
+5 −1 tests/unit/store/MMapDirectoryIntegrationTest.cpp
+6 −1 tests/unit/store/MMapDirectoryTest.cpp
+6 −1 tests/unit/store/MMapPlatformTest.cpp
Loading