2 * Copyright (c) 2014 Brocade Communications Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.controller.cluster.datastore;
11 import org.opendaylight.controller.cluster.raft.ConfigParams;
12 import org.opendaylight.controller.cluster.raft.DefaultConfigParamsImpl;
13 import org.opendaylight.controller.md.sal.dom.store.impl.InMemoryDOMDataStoreConfigProperties;
15 import scala.concurrent.duration.Duration;
16 import scala.concurrent.duration.FiniteDuration;
18 import java.util.concurrent.TimeUnit;
21 * Contains contextual data for a data store.
23 * @author Thomas Pantelis
25 public class DatastoreContext {
27 private final InMemoryDOMDataStoreConfigProperties dataStoreProperties;
28 private final Duration shardTransactionIdleTimeout;
29 private final int operationTimeoutInSeconds;
30 private final String dataStoreMXBeanType;
31 private final ConfigParams shardRaftConfig;
33 public DatastoreContext() {
34 this("DistributedDatastore", null, Duration.create(10, TimeUnit.MINUTES), 5, 1000, 20000, 500);
37 public DatastoreContext(String dataStoreMXBeanType,
38 InMemoryDOMDataStoreConfigProperties dataStoreProperties,
39 Duration shardTransactionIdleTimeout,
40 int operationTimeoutInSeconds,
41 int shardJournalRecoveryLogBatchSize,
42 int shardSnapshotBatchCount,
43 int shardHeartbeatIntervalInMillis) {
44 this.dataStoreMXBeanType = dataStoreMXBeanType;
45 this.dataStoreProperties = dataStoreProperties;
46 this.shardTransactionIdleTimeout = shardTransactionIdleTimeout;
47 this.operationTimeoutInSeconds = operationTimeoutInSeconds;
49 DefaultConfigParamsImpl raftConfig = new DefaultConfigParamsImpl();
50 raftConfig.setHeartBeatInterval(new FiniteDuration(shardHeartbeatIntervalInMillis,
51 TimeUnit.MILLISECONDS));
52 raftConfig.setJournalRecoveryLogBatchSize(shardJournalRecoveryLogBatchSize);
53 raftConfig.setSnapshotBatchCount(shardSnapshotBatchCount);
54 shardRaftConfig = raftConfig;
57 public InMemoryDOMDataStoreConfigProperties getDataStoreProperties() {
58 return dataStoreProperties;
61 public Duration getShardTransactionIdleTimeout() {
62 return shardTransactionIdleTimeout;
65 public String getDataStoreMXBeanType() {
66 return dataStoreMXBeanType;
69 public int getOperationTimeoutInSeconds() {
70 return operationTimeoutInSeconds;
73 public ConfigParams getShardRaftConfig() {
74 return shardRaftConfig;