diff --git a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueContainer.java b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueContainer.java index 1fff7494e87c..a239b5fbd8a5 100644 --- a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueContainer.java +++ b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueContainer.java @@ -528,6 +528,9 @@ public void exportContainerData(OutputStream destination, + getContainerData().getContainerID() + " is in state " + state); } compactDB(); + // Close DB (and remove from cache) to avoid concurrent modification while + // packing it. + BlockUtils.removeDB(containerData, config); packer.pack(this, destination); } diff --git a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/TestKeyValueContainer.java b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/TestKeyValueContainer.java index c2b487be2933..25d8b1d25edf 100644 --- a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/TestKeyValueContainer.java +++ b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/TestKeyValueContainer.java @@ -199,7 +199,6 @@ public void testContainerImportExport() throws Exception { metadataStore.getStore().getMetadataTable() .put(OzoneConsts.BLOCK_COUNT, numberOfKeysToWrite); } - BlockUtils.removeDB(keyValueContainerData, CONF); Map metadata = new HashMap<>(); metadata.put("key1", "value1");