1
0
Fork 0
arangodb/arangod/MMFiles
Dronplane 592063c503 Bug fix 3.4/data loss in view (#9658)
* Added full index iterator utilization in case of some documents was not found in collection

* Added index operations reversal in case of insertion failure in rocksdb

* Removed singleop optimization as rollback possible even for such operations (in case of index operation failure on insert)

* Added tests for insert rollback in views

* Added catch tests for view block

* Added changelog entry

* fixed jslint errors

* fixed linux build

* Added test for update

* Fix CHANGELOG sequence

* Add line

* Added reverts for update and remove failures

* Cleanup in test. Added throwing error in case of failed reversal

* fixed typo

Co-Authored-By: Simran <Simran-B@users.noreply.github.com>

* fixed build

* Applied review comments

* Applied review comments
2019-08-09 17:30:17 +03:00
..
CMakeLists.txt yet more micro optimizations (#7399) 2018-11-21 17:09:16 +01:00
MMFilesAllocatorThread.cpp big reformat 2018-12-26 00:57:05 +01:00
MMFilesAllocatorThread.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesCleanupThread.cpp big reformat 2018-12-26 00:57:05 +01:00
MMFilesCleanupThread.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesCollection.cpp Bug fix 3.4/cleanup 31032019 (#8633) 2019-04-01 17:02:00 +02:00
MMFilesCollection.h don't run compact() on a collection after a truncate() was done in the same transaction (#8471) 2019-03-20 17:44:06 +01:00
MMFilesCollectionExport.cpp Bug fix 3.4/replication fuzz debugging (#8668) 2019-04-03 11:43:36 +02:00
MMFilesCollectionExport.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesCollectionKeys.cpp big reformat 2018-12-26 00:57:05 +01:00
MMFilesCollectionKeys.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesCollectionWriteLocker.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesCollectorCache.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesCollectorThread.cpp big reformat 2018-12-26 00:57:05 +01:00
MMFilesCollectorThread.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesCompactionFeature.cpp big reformat 2018-12-26 00:57:05 +01:00
MMFilesCompactionFeature.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesCompactionLocker.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesCompactorThread.cpp big reformat 2018-12-26 00:57:05 +01:00
MMFilesCompactorThread.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesDatafile.cpp big reformat 2018-12-26 00:57:05 +01:00
MMFilesDatafile.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesDatafileHelper.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesDatafileStatistics.cpp big reformat 2018-12-26 00:57:05 +01:00
MMFilesDatafileStatistics.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesDatafileStatisticsContainer.cpp big reformat 2018-12-26 00:57:05 +01:00
MMFilesDatafileStatisticsContainer.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesDitch.cpp Bug fix 3.4/address jenkins fails (#7985) 2019-01-22 12:32:17 +01:00
MMFilesDitch.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesDocumentOperation.cpp big reformat 2018-12-26 00:57:05 +01:00
MMFilesDocumentOperation.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesDocumentPosition.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesEdgeIndex.cpp big reformat 2018-12-26 00:57:05 +01:00
MMFilesEdgeIndex.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesEngine.cpp Bug fix 3.4/address jenkins fails (#7985) 2019-01-22 12:32:17 +01:00
MMFilesEngine.h Bug fix 3.4/cleanup 31032019 (#8633) 2019-04-01 17:02:00 +02:00
MMFilesExportCursor.cpp Bug fix 3.4/scheduler empty reformat (#7872) 2019-01-08 20:39:42 +01:00
MMFilesExportCursor.h Bug fix 3.4/scheduler empty reformat (#7872) 2019-01-08 20:39:42 +01:00
MMFilesFulltextIndex.cpp big reformat 2018-12-26 00:57:05 +01:00
MMFilesFulltextIndex.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesGeoIndex.cpp Pregel various fixes (#8879) 2019-05-07 09:53:18 +02:00
MMFilesGeoIndex.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesHashIndex.cpp Bug fix 3.4/data loss in view (#9658) 2019-08-09 17:30:17 +03:00
MMFilesHashIndex.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesIncrementalSync.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesIndex.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesIndexElement.cpp big reformat 2018-12-26 00:57:05 +01:00
MMFilesIndexElement.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesIndexFactory.cpp Remove USE_IRESEARCH definition and usage (#8612) 2019-03-28 17:22:11 +01:00
MMFilesIndexFactory.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesIndexLookupContext.cpp big reformat 2018-12-26 00:57:05 +01:00
MMFilesIndexLookupContext.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesLogfileManager.cpp Bug fix 3.4/cleanup 31032019 (#8633) 2019-04-01 17:02:00 +02:00
MMFilesLogfileManager.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesOptimizerRules.cpp Remove USE_IRESEARCH definition and usage (#8612) 2019-03-28 17:22:11 +01:00
MMFilesOptimizerRules.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesPathBasedIndex.cpp big reformat 2018-12-26 00:57:05 +01:00
MMFilesPathBasedIndex.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesPersistentIndex.cpp big reformat 2018-12-26 00:57:05 +01:00
MMFilesPersistentIndex.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesPersistentIndexFeature.cpp big reformat 2018-12-26 00:57:05 +01:00
MMFilesPersistentIndexFeature.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesPersistentIndexKeyComparator.cpp big reformat 2018-12-26 00:57:05 +01:00
MMFilesPersistentIndexKeyComparator.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesPrimaryIndex.cpp big reformat 2018-12-26 00:57:05 +01:00
MMFilesPrimaryIndex.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesRemoverThread.cpp big reformat 2018-12-26 00:57:05 +01:00
MMFilesRemoverThread.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesRestCollectionHandler.cpp big reformat 2018-12-26 00:57:05 +01:00
MMFilesRestCollectionHandler.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesRestExportHandler.cpp big reformat 2018-12-26 00:57:05 +01:00
MMFilesRestExportHandler.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesRestHandlers.cpp big reformat 2018-12-26 00:57:05 +01:00
MMFilesRestHandlers.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesRestReplicationHandler.cpp Bug fix 3.4/replication fuzz debugging (#8668) 2019-04-03 11:43:36 +02:00
MMFilesRestReplicationHandler.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesRestWalHandler.cpp big reformat 2018-12-26 00:57:05 +01:00
MMFilesRestWalHandler.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesRevisionsCache.cpp big reformat 2018-12-26 00:57:05 +01:00
MMFilesRevisionsCache.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesSkiplist.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesSkiplistIndex.cpp big reformat 2018-12-26 00:57:05 +01:00
MMFilesSkiplistIndex.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesSynchronizerThread.cpp big reformat 2018-12-26 00:57:05 +01:00
MMFilesSynchronizerThread.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesTransactionCollection.cpp big reformat 2018-12-26 00:57:05 +01:00
MMFilesTransactionCollection.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesTransactionContextData.cpp big reformat 2018-12-26 00:57:05 +01:00
MMFilesTransactionContextData.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesTransactionManager.cpp big reformat 2018-12-26 00:57:05 +01:00
MMFilesTransactionManager.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesTransactionState.cpp big reformat 2018-12-26 00:57:05 +01:00
MMFilesTransactionState.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesV8Functions.cpp big reformat 2018-12-26 00:57:05 +01:00
MMFilesV8Functions.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesWalAccess.cpp various replication improvements (#8300) 2019-03-11 13:07:43 +01:00
MMFilesWalAccess.h various replication improvements (#8300) 2019-03-11 13:07:43 +01:00
MMFilesWalLogfile.cpp big reformat 2018-12-26 00:57:05 +01:00
MMFilesWalLogfile.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesWalMarker.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesWalRecoverState.cpp big reformat 2018-12-26 00:57:05 +01:00
MMFilesWalRecoverState.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesWalRecoveryFeature.cpp big reformat 2018-12-26 00:57:05 +01:00
MMFilesWalRecoveryFeature.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesWalSlot.cpp big reformat 2018-12-26 00:57:05 +01:00
MMFilesWalSlot.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesWalSlots.cpp big reformat 2018-12-26 00:57:05 +01:00
MMFilesWalSlots.h big reformat 2018-12-26 00:57:05 +01:00
MMFilesWalSyncRegion.h big reformat 2018-12-26 00:57:05 +01:00
README.md remove transferMarkers from StorageEngine.h 2017-02-21 16:00:37 +01:00
mmfiles-fulltext-common.h move replication-dump into engine 2017-03-21 13:55:57 +01:00
mmfiles-fulltext-index.cpp big reformat 2018-12-26 00:57:05 +01:00
mmfiles-fulltext-index.h big reformat 2018-12-26 00:57:05 +01:00
mmfiles-fulltext-list.cpp big reformat 2018-12-26 00:57:05 +01:00
mmfiles-fulltext-list.h big reformat 2018-12-26 00:57:05 +01:00
mmfiles-fulltext-query.cpp big reformat 2018-12-26 00:57:05 +01:00
mmfiles-fulltext-query.h big reformat 2018-12-26 00:57:05 +01:00
mmfiles-replication-common.cpp big reformat 2018-12-26 00:57:05 +01:00
mmfiles-replication-common.h big reformat 2018-12-26 00:57:05 +01:00
mmfiles-replication-dump.cpp Sync Foxx Queues (#8254) 2019-02-25 17:16:26 +01:00
mmfiles-replication-dump.h big reformat 2018-12-26 00:57:05 +01:00

README.md

MMFilesEngine

How operations are stored - Overview

All operations like insert or remove are written as markers to a write ahead log (WAL). This WAL consists of files of a certain size and if such a file is full (or is manually flushed), all relevant markers are transferred (transferMarkers()) to the journals of the respective collections. During the transfer any obsolete markers will be thrown away: a sequence of insert, remove, insert on the same document will result in the last insert discarding the previous operations. When a journal file of size (journalSize()) is full, it will be sealed and renamed. By applying these operations it will become a datafile that is read-only. Datafiles will eventually be merged by a compactor thread that does about the same work as the transferMarkers function, reducing the size of the stored data.

Ditches

Ditches are used to pin objects in WAL or journal as long as they are used by other operations.