X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2FDatastoreContext.java;h=17e0a5c094f181e6115083a0085e8c33cf81301c;hb=0597bd64ca6214fd3ca3fb152ab2ca7fd3b32ed5;hp=2987ea2da4253e8ec84267483443f4447c7aca73;hpb=7cb260aeb0738104e3bee8a086de9e2e5f77b7e0;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DatastoreContext.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DatastoreContext.java index 2987ea2da4..17e0a5c094 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DatastoreContext.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DatastoreContext.java @@ -24,6 +24,7 @@ import org.opendaylight.controller.cluster.raft.ConfigParams; import org.opendaylight.controller.cluster.raft.DefaultConfigParamsImpl; import org.opendaylight.controller.cluster.raft.PeerAddressResolver; import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.distributed.datastore.provider.rev140612.DataStoreProperties.ExportOnRecovery; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -64,8 +65,10 @@ public class DatastoreContext implements ClientActorConfig { public static final int DEFAULT_SHARD_BATCHED_MODIFICATION_COUNT = 1000; public static final long DEFAULT_SHARD_COMMIT_QUEUE_EXPIRY_TIMEOUT_IN_MS = TimeUnit.MILLISECONDS.convert(2, TimeUnit.MINUTES); - public static final int DEFAULT_MAX_MESSAGE_SLICE_SIZE = 2048 * 1000; // 2MB + public static final int DEFAULT_MAX_MESSAGE_SLICE_SIZE = 480 * 1024; // 480KiB public static final int DEFAULT_INITIAL_PAYLOAD_SERIALIZED_BUFFER_CAPACITY = 512; + public static final ExportOnRecovery DEFAULT_EXPORT_ON_RECOVERY = ExportOnRecovery.Off; + public static final String DEFAULT_RECOVERY_EXPORT_BASE_DIR = "persistence-export"; public static final long DEFAULT_SYNC_INDEX_THRESHOLD = 10; @@ -93,7 +96,7 @@ public class DatastoreContext implements ClientActorConfig { private int shardBatchedModificationCount = DEFAULT_SHARD_BATCHED_MODIFICATION_COUNT; private boolean writeOnlyTransactionOptimizationsEnabled = true; private long shardCommitQueueExpiryTimeoutInMillis = DEFAULT_SHARD_COMMIT_QUEUE_EXPIRY_TIMEOUT_IN_MS; - private boolean useTellBasedProtocol = false; + private boolean useTellBasedProtocol = true; private boolean transactionDebugContextEnabled = false; private String shardManagerPersistenceId; private int maximumMessageSliceSize = DEFAULT_MAX_MESSAGE_SLICE_SIZE; @@ -102,6 +105,8 @@ public class DatastoreContext implements ClientActorConfig { private long noProgressTimeout = AbstractClientConnection.DEFAULT_NO_PROGRESS_TIMEOUT_NANOS; private int initialPayloadSerializedBufferCapacity = DEFAULT_INITIAL_PAYLOAD_SERIALIZED_BUFFER_CAPACITY; private boolean useLz4Compression = false; + private ExportOnRecovery exportOnRecovery = DEFAULT_EXPORT_ON_RECOVERY; + private String recoveryExportBaseDir = DEFAULT_RECOVERY_EXPORT_BASE_DIR; public static Set getGlobalDatastoreNames() { return GLOBAL_DATASTORE_NAMES; @@ -122,32 +127,34 @@ public class DatastoreContext implements ClientActorConfig { } private DatastoreContext(final DatastoreContext other) { - this.shardTransactionIdleTimeout = other.shardTransactionIdleTimeout; - this.operationTimeoutInMillis = other.operationTimeoutInMillis; - this.dataStoreMXBeanType = other.dataStoreMXBeanType; - this.shardTransactionCommitTimeoutInSeconds = other.shardTransactionCommitTimeoutInSeconds; - this.shardTransactionCommitQueueCapacity = other.shardTransactionCommitQueueCapacity; - this.shardInitializationTimeout = other.shardInitializationTimeout; - this.shardLeaderElectionTimeout = other.shardLeaderElectionTimeout; - this.initialSettleTimeoutMultiplier = other.initialSettleTimeoutMultiplier; - this.persistent = other.persistent; - this.snapshotOnRootOverwrite = other.snapshotOnRootOverwrite; - this.configurationReader = other.configurationReader; - this.transactionCreationInitialRateLimit = other.transactionCreationInitialRateLimit; - this.dataStoreName = other.dataStoreName; - this.logicalStoreType = other.logicalStoreType; - this.storeRoot = other.storeRoot; - this.shardBatchedModificationCount = other.shardBatchedModificationCount; - this.writeOnlyTransactionOptimizationsEnabled = other.writeOnlyTransactionOptimizationsEnabled; - this.shardCommitQueueExpiryTimeoutInMillis = other.shardCommitQueueExpiryTimeoutInMillis; - this.transactionDebugContextEnabled = other.transactionDebugContextEnabled; - this.shardManagerPersistenceId = other.shardManagerPersistenceId; - this.useTellBasedProtocol = other.useTellBasedProtocol; - this.backendAlivenessTimerInterval = other.backendAlivenessTimerInterval; - this.requestTimeout = other.requestTimeout; - this.noProgressTimeout = other.noProgressTimeout; - this.initialPayloadSerializedBufferCapacity = other.initialPayloadSerializedBufferCapacity; - this.useLz4Compression = other.useLz4Compression; + shardTransactionIdleTimeout = other.shardTransactionIdleTimeout; + operationTimeoutInMillis = other.operationTimeoutInMillis; + dataStoreMXBeanType = other.dataStoreMXBeanType; + shardTransactionCommitTimeoutInSeconds = other.shardTransactionCommitTimeoutInSeconds; + shardTransactionCommitQueueCapacity = other.shardTransactionCommitQueueCapacity; + shardInitializationTimeout = other.shardInitializationTimeout; + shardLeaderElectionTimeout = other.shardLeaderElectionTimeout; + initialSettleTimeoutMultiplier = other.initialSettleTimeoutMultiplier; + persistent = other.persistent; + snapshotOnRootOverwrite = other.snapshotOnRootOverwrite; + configurationReader = other.configurationReader; + transactionCreationInitialRateLimit = other.transactionCreationInitialRateLimit; + dataStoreName = other.dataStoreName; + logicalStoreType = other.logicalStoreType; + storeRoot = other.storeRoot; + shardBatchedModificationCount = other.shardBatchedModificationCount; + writeOnlyTransactionOptimizationsEnabled = other.writeOnlyTransactionOptimizationsEnabled; + shardCommitQueueExpiryTimeoutInMillis = other.shardCommitQueueExpiryTimeoutInMillis; + transactionDebugContextEnabled = other.transactionDebugContextEnabled; + shardManagerPersistenceId = other.shardManagerPersistenceId; + useTellBasedProtocol = other.useTellBasedProtocol; + backendAlivenessTimerInterval = other.backendAlivenessTimerInterval; + requestTimeout = other.requestTimeout; + noProgressTimeout = other.noProgressTimeout; + initialPayloadSerializedBufferCapacity = other.initialPayloadSerializedBufferCapacity; + useLz4Compression = other.useLz4Compression; + exportOnRecovery = other.exportOnRecovery; + recoveryExportBaseDir = other.recoveryExportBaseDir; setShardJournalRecoveryLogBatchSize(other.raftConfig.getJournalRecoveryLogBatchSize()); setSnapshotBatchCount(other.raftConfig.getSnapshotBatchCount()); @@ -222,7 +229,7 @@ public class DatastoreContext implements ClientActorConfig { } public boolean isSnapshotOnRootOverwrite() { - return this.snapshotOnRootOverwrite; + return snapshotOnRootOverwrite; } public AkkaConfigurationReader getConfigurationReader() { @@ -366,6 +373,14 @@ public class DatastoreContext implements ClientActorConfig { return useLz4Compression; } + public ExportOnRecovery getExportOnRecovery() { + return exportOnRecovery; + } + + public String getRecoveryExportBaseDir() { + return recoveryExportBaseDir; + } + @Override public int getMaximumMessageSliceSize() { return maximumMessageSliceSize; @@ -390,7 +405,7 @@ public class DatastoreContext implements ClientActorConfig { return initialPayloadSerializedBufferCapacity; } - public static class Builder implements org.opendaylight.yangtools.concepts.Builder { + public static class Builder { private final DatastoreContext datastoreContext; Builder(final DatastoreContext datastoreContext) { @@ -587,33 +602,23 @@ public class DatastoreContext implements ClientActorConfig { return this; } - @Deprecated(forRemoval = true) - public Builder maxShardDataChangeExecutorPoolSize(final int newMaxShardDataChangeExecutorPoolSize) { - return this; - } - - @Deprecated(forRemoval = true) - public Builder maxShardDataChangeExecutorQueueSize(final int newMaxShardDataChangeExecutorQueueSize) { - return this; - } - - @Deprecated(forRemoval = true) - public Builder maxShardDataChangeListenerQueueSize(final int newMaxShardDataChangeListenerQueueSize) { + public Builder useTellBasedProtocol(final boolean value) { + datastoreContext.useTellBasedProtocol = value; return this; } - @Deprecated(forRemoval = true) - public Builder maxShardDataStoreExecutorQueueSize(final int newMaxShardDataStoreExecutorQueueSize) { + public Builder useLz4Compression(final boolean value) { + datastoreContext.useLz4Compression = value; return this; } - public Builder useTellBasedProtocol(final boolean value) { - datastoreContext.useTellBasedProtocol = value; + public Builder exportOnRecovery(final ExportOnRecovery value) { + datastoreContext.exportOnRecovery = value; return this; } - public Builder useLz4Compression(final boolean value) { - datastoreContext.useLz4Compression = value; + public Builder recoveryExportBaseDir(final String value) { + datastoreContext.recoveryExportBaseDir = value; return this; } @@ -684,7 +689,6 @@ public class DatastoreContext implements ClientActorConfig { return this; } - @Override public DatastoreContext build() { if (datastoreContext.dataStoreName != null) { GLOBAL_DATASTORE_NAMES.add(datastoreContext.dataStoreName);