Skip to content

Commit 5e0198b

Browse files
committed
HDDS-12833. Remove the CodecRegistry field from DBStoreBuilder.
1 parent c97ccd1 commit 5e0198b

File tree

11 files changed

+68
-196
lines changed

11 files changed

+68
-196
lines changed

hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/metadata/AbstractRDBStore.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ public void start(ConfigurationSource config)
7272
options.setInfoLogLevel(level);
7373
options.setMaxLogFileSize(dc.getRocksdbLogMaxFileSize());
7474
options.setKeepLogFileNum(dc.getRocksdbLogMaxFileNum());
75-
this.store = initDBStore(DBStoreBuilder.newBuilder(config, dbDef)
75+
this.store = initDBStore(DBStoreBuilder.newBuilder(config, dbDef, null, null)
7676
.setDBOptions(options)
7777
.setDefaultCFOptions(cfOptions)
7878
.setOpenReadOnly(openReadOnly), options, config);

hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/HAUtils.java

Lines changed: 1 addition & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
import java.io.IOException;
3333
import java.nio.file.Files;
3434
import java.nio.file.Path;
35-
import java.nio.file.Paths;
3635
import java.security.cert.X509Certificate;
3736
import java.util.ArrayList;
3837
import java.util.Collection;
@@ -59,11 +58,9 @@
5958
import org.apache.hadoop.hdds.scm.proxy.SCMContainerLocationFailoverProxyProvider;
6059
import org.apache.hadoop.hdds.security.exception.SCMSecurityException;
6160
import org.apache.hadoop.hdds.tracing.TracingUtil;
62-
import org.apache.hadoop.hdds.utils.db.DBColumnFamilyDefinition;
6361
import org.apache.hadoop.hdds.utils.db.DBDefinition;
6462
import org.apache.hadoop.hdds.utils.db.DBStore;
6563
import org.apache.hadoop.hdds.utils.db.DBStoreBuilder;
66-
import org.apache.hadoop.hdds.utils.db.RocksDBConfiguration;
6764
import org.apache.hadoop.hdds.utils.db.Table;
6865
import org.apache.hadoop.io.retry.RetryPolicies;
6966
import org.apache.hadoop.io.retry.RetryPolicy;
@@ -250,9 +247,7 @@ private static TransactionInfo getTransactionInfoFromDB(
250247
DBDefinition definition)
251248
throws IOException {
252249

253-
try (DBStore dbStore = loadDB(tempConfig, dbDir.toFile(),
254-
dbName, definition)) {
255-
250+
try (DBStore dbStore = DBStoreBuilder.newBuilder(tempConfig, definition, dbName, dbDir).build()) {
256251
// Get the table name with TransactionInfo as the value. The transaction
257252
// info table name are different in SCM and SCM.
258253

@@ -307,27 +302,6 @@ public static boolean verifyTransactionInfo(TransactionInfo transactionInfo,
307302
return true;
308303
}
309304

310-
public static DBStore loadDB(OzoneConfiguration configuration, File metaDir,
311-
String dbName, DBDefinition definition) throws IOException {
312-
RocksDBConfiguration rocksDBConfiguration =
313-
configuration.getObject(RocksDBConfiguration.class);
314-
DBStoreBuilder dbStoreBuilder =
315-
DBStoreBuilder.newBuilder(configuration, rocksDBConfiguration)
316-
.setName(dbName)
317-
.setPath(Paths.get(metaDir.getPath()));
318-
// Add column family names and codecs.
319-
for (DBColumnFamilyDefinition columnFamily : definition
320-
.getColumnFamilies()) {
321-
322-
dbStoreBuilder.addTable(columnFamily.getName());
323-
dbStoreBuilder
324-
.addCodec(columnFamily.getKeyType(), columnFamily.getKeyCodec());
325-
dbStoreBuilder
326-
.addCodec(columnFamily.getValueType(), columnFamily.getValueCodec());
327-
}
328-
return dbStoreBuilder.build();
329-
}
330-
331305
public static File getMetaDir(DBDefinition definition,
332306
OzoneConfiguration configuration) {
333307
// Set metadata dirs.

hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/DBStoreBuilder.java

Lines changed: 22 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
import static org.rocksdb.RocksDB.DEFAULT_COLUMN_FAMILY;
3030

3131
import com.google.common.base.Preconditions;
32-
import com.google.protobuf.MessageLite;
3332
import java.io.File;
3433
import java.io.IOException;
3534
import java.nio.file.Path;
@@ -91,7 +90,6 @@ public final class DBStoreBuilder {
9190
// any options. On build, this will be replaced with defaultCfOptions.
9291
private Map<String, ManagedColumnFamilyOptions> cfOptions;
9392
private ConfigurationSource configuration;
94-
private final CodecRegistry.Builder registry = CodecRegistry.newBuilder();
9593
private String rocksDbStat;
9694
// RocksDB column family write buffer size
9795
private long rocksDbCfWriteBufferSize;
@@ -112,28 +110,23 @@ public final class DBStoreBuilder {
112110
*/
113111
public static DBStore createDBStore(ConfigurationSource configuration,
114112
DBDefinition definition) throws IOException {
115-
return newBuilder(configuration, definition).build();
113+
return newBuilder(configuration, definition, null, null).build();
116114
}
117115

118-
public static DBStoreBuilder newBuilder(ConfigurationSource configuration,
119-
DBDefinition definition) {
120-
121-
DBStoreBuilder builder = newBuilder(configuration);
122-
builder.applyDBDefinition(definition);
116+
public static DBStoreBuilder newBuilder(ConfigurationSource conf, DBDefinition definition, File dbDir) {
117+
return newBuilder(conf, definition, dbDir.getName(), dbDir.getParentFile().toPath());
118+
}
123119

124-
return builder;
120+
public static DBStoreBuilder newBuilder(ConfigurationSource conf, DBDefinition definition,
121+
String name, Path metadataDir) {
122+
return newBuilder(conf).apply(definition, name, metadataDir);
125123
}
126124

127125
public static DBStoreBuilder newBuilder(ConfigurationSource configuration) {
128-
return newBuilder(configuration,
126+
return new DBStoreBuilder(configuration,
129127
configuration.getObject(RocksDBConfiguration.class));
130128
}
131129

132-
public static DBStoreBuilder newBuilder(ConfigurationSource configuration,
133-
RocksDBConfiguration rocksDBConfiguration) {
134-
return new DBStoreBuilder(configuration, rocksDBConfiguration);
135-
}
136-
137130
private DBStoreBuilder(ConfigurationSource configuration,
138131
RocksDBConfiguration rocksDBConfiguration) {
139132
cfOptions = new HashMap<>();
@@ -173,21 +166,23 @@ public static File getDBDirPath(DBDefinition definition,
173166
return metadataDir;
174167
}
175168

176-
private void applyDBDefinition(DBDefinition definition) {
177-
// Set metadata dirs.
178-
File metadataDir = getDBDirPath(definition, configuration);
169+
private DBStoreBuilder apply(DBDefinition definition, String name, Path metadataDir) {
170+
if (name == null) {
171+
name = definition.getName();
172+
}
173+
setName(name);
179174

180-
setName(definition.getName());
181-
setPath(Paths.get(metadataDir.getPath()));
175+
// Set metadata dirs.
176+
if (metadataDir == null) {
177+
metadataDir = getDBDirPath(definition, configuration).toPath();
178+
}
179+
setPath(metadataDir);
182180

183181
// Add column family names and codecs.
184-
for (DBColumnFamilyDefinition columnFamily :
185-
definition.getColumnFamilies()) {
186-
182+
for (DBColumnFamilyDefinition<?, ?> columnFamily : definition.getColumnFamilies()) {
187183
addTable(columnFamily.getName(), columnFamily.getCfOptions());
188-
addCodec(columnFamily.getKeyType(), columnFamily.getKeyCodec());
189-
addCodec(columnFamily.getValueType(), columnFamily.getValueCodec());
190184
}
185+
return this;
191186
}
192187

193188
private void setDBOptionsProps(ManagedDBOptions dbOptions) {
@@ -206,7 +201,7 @@ private void setDBOptionsProps(ManagedDBOptions dbOptions) {
206201
*
207202
* @return DBStore
208203
*/
209-
public DBStore build() throws IOException {
204+
public RDBStore build() throws IOException {
210205
if (StringUtil.isBlank(dbname) || (dbPath == null)) {
211206
LOG.error("Required Parameter missing.");
212207
throw new IOException("Required parameter is missing. Please make sure "
@@ -229,7 +224,7 @@ public DBStore build() throws IOException {
229224
}
230225

231226
return new RDBStore(dbFile, rocksDBOption, statistics, writeOptions, tableConfigs,
232-
registry.build(), openReadOnly, dbJmxBeanNameName, enableCompactionDag,
227+
openReadOnly, dbJmxBeanNameName, enableCompactionDag,
233228
maxDbUpdatesSizeThreshold, createCheckpointDirs, configuration,
234229
enableRocksDbMetrics);
235230
} finally {
@@ -257,15 +252,6 @@ public DBStoreBuilder addTable(String tableName,
257252
return this;
258253
}
259254

260-
public <T> DBStoreBuilder addCodec(Class<T> type, Codec<T> codec) {
261-
registry.addCodec(type, codec);
262-
return this;
263-
}
264-
265-
public <T extends MessageLite> DBStoreBuilder addProto2Codec(T type) {
266-
return addCodec((Class<T>)type.getClass(), Proto2Codec.get(type));
267-
}
268-
269255
public DBStoreBuilder setDBOptions(ManagedDBOptions option) {
270256
rocksDBOption = option;
271257
return this;

hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/RDBStore.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,9 @@ public class RDBStore implements DBStore {
7575
private final ManagedStatistics statistics;
7676

7777
@SuppressWarnings("parameternumber")
78-
public RDBStore(File dbFile, ManagedDBOptions dbOptions, ManagedStatistics statistics,
78+
RDBStore(File dbFile, ManagedDBOptions dbOptions, ManagedStatistics statistics,
7979
ManagedWriteOptions writeOptions, Set<TableConfig> families,
80-
CodecRegistry registry, boolean readOnly,
80+
boolean readOnly,
8181
String dbJmxBeanName, boolean enableCompactionDag,
8282
long maxDbUpdatesSizeThreshold,
8383
boolean createCheckpointDirs,

hadoop-hdds/framework/src/test/java/org/apache/hadoop/hdds/utils/db/TestDBStoreBuilder.java

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
2121
import static org.junit.jupiter.api.Assertions.assertEquals;
22-
import static org.junit.jupiter.api.Assertions.assertInstanceOf;
2322
import static org.junit.jupiter.api.Assertions.assertNotEquals;
2423
import static org.junit.jupiter.api.Assertions.assertThrows;
2524
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -203,11 +202,7 @@ public File getDBLocation(ConfigurationSource conf) {
203202
}
204203
};
205204

206-
try (DBStore dbStore = DBStoreBuilder.newBuilder(conf, sampleDB)
207-
.setName("SampleStore").setPath(newFolder.toPath()).build()) {
208-
assertInstanceOf(RDBStore.class, dbStore);
209-
210-
RDBStore rdbStore = (RDBStore) dbStore;
205+
try (RDBStore rdbStore = DBStoreBuilder.newBuilder(conf, sampleDB, "SampleStore", newFolder.toPath()).build()) {
211206
Collection<RocksDatabase.ColumnFamily> cfFamilies =
212207
rdbStore.getColumnFamilies();
213208

@@ -267,13 +262,9 @@ public File getDBLocation(ConfigurationSource conf) {
267262
}
268263
};
269264

270-
try (DBStore dbStore = DBStoreBuilder.newBuilder(conf, sampleDB)
271-
.setName("SampleStore")
272-
.disableDefaultCFAutoCompaction(disableAutoCompaction)
273-
.setPath(newFolder.toPath()).build()) {
274-
assertInstanceOf(RDBStore.class, dbStore);
275-
276-
RDBStore rdbStore = (RDBStore) dbStore;
265+
try (RDBStore rdbStore = DBStoreBuilder.newBuilder(conf, sampleDB, "SampleStore", newFolder.toPath())
266+
.disableDefaultCFAutoCompaction(disableAutoCompaction)
267+
.build()) {
277268
Collection<RocksDatabase.ColumnFamily> cfFamilies =
278269
rdbStore.getColumnFamilies();
279270

hadoop-hdds/framework/src/test/java/org/apache/hadoop/hdds/utils/db/TestRDBStore.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ public static RDBStore newRDBStore(File dbFile, ManagedDBOptions options,
8888
long maxDbUpdatesSizeThreshold)
8989
throws IOException {
9090
return new RDBStore(dbFile, options, null, new ManagedWriteOptions(), families,
91-
CodecRegistry.newBuilder().build(), false, null, false,
91+
false, null, false,
9292
maxDbUpdatesSizeThreshold, true, null, true);
9393
}
9494

hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/scm/TestSCMInstallSnapshot.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
import org.apache.hadoop.hdds.utils.TransactionInfo;
4848
import org.apache.hadoop.hdds.utils.db.DBCheckpoint;
4949
import org.apache.hadoop.hdds.utils.db.DBStore;
50+
import org.apache.hadoop.hdds.utils.db.DBStoreBuilder;
5051
import org.apache.hadoop.ozone.MiniOzoneCluster;
5152
import org.apache.hadoop.ozone.OzoneConsts;
5253
import org.junit.jupiter.api.AfterAll;
@@ -130,8 +131,7 @@ public void testInstallCheckPoint() throws Exception {
130131
assertNotNull(parent);
131132
Path fileName = location.getFileName();
132133
assertNotNull(fileName);
133-
final DBStore db = HAUtils.loadDB(conf, parent.toFile(),
134-
fileName.toString(), SCMDBDefinition.get());
134+
final DBStore db = DBStoreBuilder.newBuilder(conf, SCMDBDefinition.get(), location.toFile()).build();
135135
// Hack the transaction index in the checkpoint so as to ensure the
136136
// checkpointed transaction index is higher than when it was downloaded
137137
// from.

0 commit comments

Comments
 (0)