|
@@ -18,9 +18,15 @@
|
|
|
|
|
|
package org.apache.hadoop.ozone.container.keyvalue;
|
|
|
|
|
|
-import com.google.common.annotations.VisibleForTesting;
|
|
|
-import com.google.common.base.Preconditions;
|
|
|
-import com.google.protobuf.ByteString;
|
|
|
+import java.io.FileInputStream;
|
|
|
+import java.io.IOException;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.LinkedList;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
+import java.util.concurrent.locks.ReentrantLock;
|
|
|
+
|
|
|
import org.apache.hadoop.conf.Configuration;
|
|
|
import org.apache.hadoop.conf.StorageUnit;
|
|
|
import org.apache.hadoop.hdds.client.BlockID;
|
|
@@ -35,80 +41,72 @@ import org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos
|
|
|
.ContainerType;
|
|
|
import org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos
|
|
|
.GetSmallFileRequestProto;
|
|
|
-import org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos
|
|
|
- .KeyValue;
|
|
|
+import org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos.KeyValue;
|
|
|
import org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos
|
|
|
.PutSmallFileRequestProto;
|
|
|
-import org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos
|
|
|
- .Type;
|
|
|
+import org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos.Type;
|
|
|
import org.apache.hadoop.hdds.scm.ScmConfigKeys;
|
|
|
import org.apache.hadoop.hdds.scm.container.common.helpers
|
|
|
.StorageContainerException;
|
|
|
import org.apache.hadoop.ozone.container.common.helpers.ChunkInfo;
|
|
|
import org.apache.hadoop.ozone.container.common.helpers.ContainerMetrics;
|
|
|
-import org.apache.hadoop.ozone.container.common.impl.OpenContainerBlockMap;
|
|
|
-import org.apache.hadoop.ozone.container.common.interfaces.Container;
|
|
|
-import org.apache.hadoop.ozone.container.common.volume.HddsVolume;
|
|
|
-import org.apache.hadoop.ozone.container.keyvalue.helpers.KeyValueContainerUtil;
|
|
|
-import org.apache.hadoop.ozone.container.keyvalue.helpers.SmallFileUtils;
|
|
|
-import org.apache.hadoop.ozone.container.common.helpers.KeyData;
|
|
|
import org.apache.hadoop.ozone.container.common.helpers.ContainerUtils;
|
|
|
+import org.apache.hadoop.ozone.container.common.helpers.KeyData;
|
|
|
import org.apache.hadoop.ozone.container.common.impl.ContainerSet;
|
|
|
+import org.apache.hadoop.ozone.container.common.impl.OpenContainerBlockMap;
|
|
|
+import org.apache.hadoop.ozone.container.common.interfaces.Container;
|
|
|
import org.apache.hadoop.ozone.container.common.interfaces.Handler;
|
|
|
import org.apache.hadoop.ozone.container.common.interfaces.VolumeChoosingPolicy;
|
|
|
+import org.apache.hadoop.ozone.container.common.volume.HddsVolume;
|
|
|
import org.apache.hadoop.ozone.container.common.volume
|
|
|
.RoundRobinVolumeChoosingPolicy;
|
|
|
import org.apache.hadoop.ozone.container.common.volume.VolumeSet;
|
|
|
import org.apache.hadoop.ozone.container.keyvalue.helpers.ChunkUtils;
|
|
|
+import org.apache.hadoop.ozone.container.keyvalue.helpers.KeyUtils;
|
|
|
+import org.apache.hadoop.ozone.container.keyvalue.helpers.KeyValueContainerUtil;
|
|
|
+import org.apache.hadoop.ozone.container.keyvalue.helpers.SmallFileUtils;
|
|
|
import org.apache.hadoop.ozone.container.keyvalue.impl.ChunkManagerImpl;
|
|
|
import org.apache.hadoop.ozone.container.keyvalue.impl.KeyManagerImpl;
|
|
|
-import org.apache.hadoop.ozone.container.keyvalue.helpers.KeyUtils;
|
|
|
import org.apache.hadoop.ozone.container.keyvalue.interfaces.ChunkManager;
|
|
|
import org.apache.hadoop.ozone.container.keyvalue.interfaces.KeyManager;
|
|
|
-import org.apache.hadoop.ozone.container.keyvalue.statemachine
|
|
|
- .background.BlockDeletingService;
|
|
|
+import org.apache.hadoop.ozone.container.keyvalue.statemachine.background
|
|
|
+ .BlockDeletingService;
|
|
|
import org.apache.hadoop.util.AutoCloseableLock;
|
|
|
import org.apache.hadoop.util.ReflectionUtils;
|
|
|
-import org.slf4j.Logger;
|
|
|
-import org.slf4j.LoggerFactory;
|
|
|
-
|
|
|
-import java.io.IOException;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.LinkedList;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.concurrent.TimeUnit;
|
|
|
-import java.util.concurrent.locks.ReentrantLock;
|
|
|
|
|
|
+import com.google.common.annotations.VisibleForTesting;
|
|
|
+import com.google.common.base.Preconditions;
|
|
|
+import com.google.protobuf.ByteString;
|
|
|
+import static org.apache.hadoop.hdds.HddsConfigKeys
|
|
|
+ .HDDS_DATANODE_VOLUME_CHOOSING_POLICY;
|
|
|
import static org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos
|
|
|
- .Result.CONTAINER_INTERNAL_ERROR;
|
|
|
+ .Result.BLOCK_NOT_COMMITTED;
|
|
|
import static org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos
|
|
|
.Result.CLOSED_CONTAINER_IO;
|
|
|
+import static org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos
|
|
|
+ .Result.CONTAINER_INTERNAL_ERROR;
|
|
|
import static org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos
|
|
|
.Result.DELETE_ON_OPEN_CONTAINER;
|
|
|
import static org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos
|
|
|
- .Result.IO_EXCEPTION;
|
|
|
+ .Result.GET_SMALL_FILE_ERROR;
|
|
|
import static org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos
|
|
|
.Result.INVALID_CONTAINER_STATE;
|
|
|
import static org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos
|
|
|
- .Result.GET_SMALL_FILE_ERROR;
|
|
|
+ .Result.IO_EXCEPTION;
|
|
|
import static org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos
|
|
|
.Result.PUT_SMALL_FILE_ERROR;
|
|
|
-import static org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos
|
|
|
- .Result.BLOCK_NOT_COMMITTED;
|
|
|
-
|
|
|
import static org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos
|
|
|
.Stage;
|
|
|
-import static org.apache.hadoop.ozone
|
|
|
- .OzoneConfigKeys.OZONE_BLOCK_DELETING_SERVICE_INTERVAL;
|
|
|
-import static org.apache.hadoop.ozone
|
|
|
- .OzoneConfigKeys.OZONE_BLOCK_DELETING_SERVICE_INTERVAL_DEFAULT;
|
|
|
-import static org.apache.hadoop.ozone
|
|
|
- .OzoneConfigKeys.OZONE_BLOCK_DELETING_SERVICE_TIMEOUT;
|
|
|
-import static org.apache.hadoop.ozone
|
|
|
- .OzoneConfigKeys.OZONE_BLOCK_DELETING_SERVICE_TIMEOUT_DEFAULT;
|
|
|
-import static org.apache.hadoop.hdds.HddsConfigKeys
|
|
|
- .HDDS_DATANODE_VOLUME_CHOOSING_POLICY;
|
|
|
+import static org.apache.hadoop.ozone.OzoneConfigKeys
|
|
|
+ .OZONE_BLOCK_DELETING_SERVICE_INTERVAL;
|
|
|
+import static org.apache.hadoop.ozone.OzoneConfigKeys
|
|
|
+ .OZONE_BLOCK_DELETING_SERVICE_INTERVAL_DEFAULT;
|
|
|
+import static org.apache.hadoop.ozone.OzoneConfigKeys
|
|
|
+ .OZONE_BLOCK_DELETING_SERVICE_TIMEOUT;
|
|
|
+import static org.apache.hadoop.ozone.OzoneConfigKeys
|
|
|
+ .OZONE_BLOCK_DELETING_SERVICE_TIMEOUT_DEFAULT;
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
|
|
|
/**
|
|
|
* Handler for KeyValue Container type.
|
|
@@ -831,4 +829,22 @@ public class KeyValueHandler extends Handler {
|
|
|
throw new StorageContainerException(msg, result);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ public Container importContainer(long containerID, long maxSize,
|
|
|
+ FileInputStream rawContainerStream,
|
|
|
+ TarContainerPacker packer)
|
|
|
+ throws IOException {
|
|
|
+
|
|
|
+ KeyValueContainerData containerData =
|
|
|
+ new KeyValueContainerData(containerID,
|
|
|
+ maxSize);
|
|
|
+
|
|
|
+ KeyValueContainer container = new KeyValueContainer(containerData,
|
|
|
+ conf);
|
|
|
+
|
|
|
+ populateContainerPathFields(container, maxSize);
|
|
|
+ container.importContainerData(rawContainerStream, packer);
|
|
|
+ return container;
|
|
|
+
|
|
|
+ }
|
|
|
}
|