You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by xy...@apache.org on 2017/05/14 13:09:18 UTC
hadoop git commit: HDFS-11805. Ensure LevelDB DBIterator is closed.
Contributed by Chen Liang.
Repository: hadoop
Updated Branches:
refs/heads/HDFS-7240 7e8b3e254 -> b8e063ebc
HDFS-11805. Ensure LevelDB DBIterator is closed. Contributed by Chen Liang.
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/b8e063eb
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/b8e063eb
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/b8e063eb
Branch: refs/heads/HDFS-7240
Commit: b8e063ebcb4debe39123787930140c783079099c
Parents: 7e8b3e2
Author: Xiaoyu Yao <xy...@apache.org>
Authored: Sun May 14 06:06:58 2017 -0700
Committer: Xiaoyu Yao <xy...@apache.org>
Committed: Sun May 14 06:06:58 2017 -0700
----------------------------------------------------------------------
.../org/apache/hadoop/cblock/CBlockManager.java | 26 ++++-----
.../web/localstorage/OzoneMetadataManager.java | 57 ++++++++++----------
2 files changed, 42 insertions(+), 41 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/b8e063eb/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/cblock/CBlockManager.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/cblock/CBlockManager.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/cblock/CBlockManager.java
index 9f8d5b1..4095530 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/cblock/CBlockManager.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/cblock/CBlockManager.java
@@ -74,7 +74,6 @@ import static org.apache.hadoop.cblock.CBlockConfigKeys.DFS_CBLOCK_SERVICERPC_HA
import static org.apache.hadoop.cblock.CBlockConfigKeys.DFS_CBLOCK_SERVICERPC_HANDLER_COUNT_KEY;
import static org.apache.hadoop.cblock.CBlockConfigKeys.DFS_CBLOCK_SERVICE_LEVELDB_PATH_DEFAULT;
import static org.apache.hadoop.cblock.CBlockConfigKeys.DFS_CBLOCK_SERVICE_LEVELDB_PATH_KEY;
-import static org.apache.hadoop.ozone.OzoneConfigKeys.OZONE_LOCALSTORAGE_ROOT_DEFAULT;
/**
* The main entry point of CBlock operations, ALL the CBlock operations
@@ -269,18 +268,19 @@ public class CBlockManager implements CBlockServiceProtocol,
levelDBStore.delete(key);
}
- public void readFromPersistentStore() {
- DBIterator iter = levelDBStore.getIterator();
- iter.seekToFirst();
- while (iter.hasNext()) {
- Map.Entry<byte[], byte[]> entry = iter.next();
- String volumeKey = new String(entry.getKey(), encoding);
- try {
- VolumeDescriptor volumeDescriptor =
- VolumeDescriptor.fromProtobuf(entry.getValue());
- storageManager.addVolume(volumeDescriptor);
- } catch (IOException e) {
- LOG.error("Loading volume " + volumeKey + " error " + e);
+ public void readFromPersistentStore() throws IOException {
+ try (DBIterator iter = levelDBStore.getIterator()) {
+ iter.seekToFirst();
+ while (iter.hasNext()) {
+ Map.Entry<byte[], byte[]> entry = iter.next();
+ String volumeKey = new String(entry.getKey(), encoding);
+ try {
+ VolumeDescriptor volumeDescriptor =
+ VolumeDescriptor.fromProtobuf(entry.getValue());
+ storageManager.addVolume(volumeDescriptor);
+ } catch (IOException e) {
+ LOG.error("Loading volume " + volumeKey + " error " + e);
+ }
}
}
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/b8e063eb/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/localstorage/OzoneMetadataManager.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/localstorage/OzoneMetadataManager.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/localstorage/OzoneMetadataManager.java
index 52c192c..c63707c 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/localstorage/OzoneMetadataManager.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/localstorage/OzoneMetadataManager.java
@@ -452,45 +452,46 @@ public final class OzoneMetadataManager {
String prevKey = args.getPrevKey();
int maxCount = args.getMaxKeys();
String userName = null;
- DBIterator iterator = this.userDB.getDB().iterator();
+ try (DBIterator iterator = this.userDB.getDB().iterator()) {
- if (prevKey != null) {
- // Format is username/volumeName
+ if (prevKey != null) {
+ // Format is username/volumeName
+
+ String[] volName = args.getPrevKey().split("/");
+ if (volName.length < 2) {
+ throw ErrorTable.newError(ErrorTable.USER_NOT_FOUND, args.getArgs());
+ }
+ seekToUser(iterator, volName[0]);
+ userName = new String(iterator.peekNext().getKey(), encoding);
+ prevKey = volName[1];
+ } else {
+ userName = getFirstUser(iterator);
+ }
- String[] volName = args.getPrevKey().split("/");
- if (volName.length < 2) {
+ if (userName == null || userName.isEmpty()) {
throw ErrorTable.newError(ErrorTable.USER_NOT_FOUND, args.getArgs());
}
- seekToUser(iterator, volName[0]);
- userName = new String(iterator.peekNext().getKey(), encoding);
- prevKey = volName[1];
- } else {
- userName = getFirstUser(iterator);
- }
- if (userName == null || userName.isEmpty()) {
- throw ErrorTable.newError(ErrorTable.USER_NOT_FOUND, args.getArgs());
- }
+ ListVolumes returnSet = new ListVolumes();
+ int count = maxCount - returnSet.getVolumes().size();
- ListVolumes returnSet = new ListVolumes();
- int count = maxCount - returnSet.getVolumes().size();
+ // we need to iterate through users until we get maxcount volumes
+ // or no more volumes are left.
+ while (iterator.hasNext() && count > 0) {
- // we need to iterate through users until we get maxcount volumes
- // or no more volumes are left.
- while (iterator.hasNext() && count > 0) {
+ userName = new String(iterator.next().getKey(), encoding);
- userName = new String(iterator.next().getKey(), encoding);
+ byte[] volumeList = userDB.get(userName.getBytes(encoding));
+ if (volumeList == null) {
+ throw ErrorTable.newError(ErrorTable.USER_NOT_FOUND, args.getArgs());
+ }
- byte[] volumeList = userDB.get(userName.getBytes(encoding));
- if (volumeList == null) {
- throw ErrorTable.newError(ErrorTable.USER_NOT_FOUND, args.getArgs());
+ returnSet.getVolumes().addAll(getFilteredVolumes(
+ volumeList, prefix, prevKey, count).getVolumes());
+ count = maxCount - returnSet.getVolumes().size();
}
-
- returnSet.getVolumes().addAll(
- getFilteredVolumes(volumeList, prefix, prevKey, count).getVolumes());
- count = maxCount - returnSet.getVolumes().size();
+ return returnSet;
}
- return returnSet;
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org