The NativeStore has a forceSync configuration parameter which is intended to force NIO FileChannel.close being called on commit - this to ensure that all data is physically written to disk before commit completes. By default, this config parameter is disabled for performance reasons, but it should be possible for a user to enable it to ensure consistency in the event of abnormal JVM termination.
However, the parameter is not exposed in the NativeStoreConfig, not read or configured by the NativestoreConfigFactory, and not configurable via either the CLI Console or the RDF4J Workbench.
In addition, it is not consistently used and enforced in all internal sync operations in the NativeStore. Btree.sync uses the parameter, but AllocatedNodesList.sync does not.
To fix, we should make sure the parameter is user-configurable (in the Config class, the native store templates, and the Console and Workbench), and that it is consistently used for all files involved in native store disk access, upon commit.
A possible follow-up issue is re-evaluation its performance impact. The assessment that it slows things down was done when Sesame 2.0 was first released, and a lot has changed in both the native store implementation and Java NIO performance, as well.
The text was updated successfully, but these errors were encountered:
The NativeStore has a
forceSync
configuration parameter which is intended to force NIOFileChannel.close
being called on commit - this to ensure that all data is physically written to disk before commit completes. By default, this config parameter is disabled for performance reasons, but it should be possible for a user to enable it to ensure consistency in the event of abnormal JVM termination.However, the parameter is not exposed in the NativeStoreConfig, not read or configured by the NativestoreConfigFactory, and not configurable via either the CLI Console or the RDF4J Workbench.
In addition, it is not consistently used and enforced in all internal sync operations in the NativeStore.
Btree.sync
uses the parameter, butAllocatedNodesList.sync
does not.To fix, we should make sure the parameter is user-configurable (in the Config class, the native store templates, and the Console and Workbench), and that it is consistently used for all files involved in native store disk access, upon commit.
A possible follow-up issue is re-evaluation its performance impact. The assessment that it slows things down was done when Sesame 2.0 was first released, and a lot has changed in both the native store implementation and Java NIO performance, as well.
The text was updated successfully, but these errors were encountered: