private Log openLog(String logManagerName, String logName) {
try {
final ModifiableConfiguration configuration = new ModifiableConfiguration(GraphDatabaseConfiguration.ROOT_NS,config.copy(), BasicConfiguration.Restriction.NONE);
configuration.set(GraphDatabaseConfiguration.UNIQUE_INSTANCE_ID, "reader");
configuration.set(GraphDatabaseConfiguration.LOG_READ_INTERVAL, Duration.ofMillis(500L), logManagerName);
if (logStoreManager==null) {
logStoreManager = Backend.getStorageManager(configuration);
}
final StoreFeatures f = logStoreManager.getFeatures();
final boolean part = f.isDistributed() && f.isKeyOrdered();
if (part) {
for (final String partitionedLogName : new String[]{USER_LOG,TRANSACTION_LOG,MANAGEMENT_LOG})
configuration.set(KCVSLogManager.LOG_MAX_PARTITIONS,8,partitionedLogName);
}
assert logStoreManager!=null;
if (!logManagers.containsKey(logManagerName)) {
final Configuration logConfig = configuration.restrictTo(logManagerName);
Preconditions.checkArgument(logConfig.get(LOG_BACKEND).equals(LOG_BACKEND.getDefaultValue()));
logManagers.put(logManagerName,new KCVSLogManager(logStoreManager,logConfig));
}
assert logManagers.containsKey(logManagerName);
return logManagers.get(logManagerName).openLog(logName);
} catch (final BackendException e) {
throw new JanusGraphException("Could not open log: "+ logName,e);
}
}