Skip to content

Commit 06998a1

Browse files
authored
HDDS-2180. Add Object ID and update ID on VolumeList Object. (#1526)
1 parent 18a8c24 commit 06998a1

File tree

11 files changed

+46
-13
lines changed

11 files changed

+46
-13
lines changed

hadoop-ozone/common/src/main/proto/OzoneManagerProtocol.proto

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -354,6 +354,8 @@ message CreateVolumeResponse {
354354

355355
message VolumeList {
356356
repeated string volumeNames = 1;
357+
optional uint64 objectID = 2;
358+
optional uint64 updateID = 3;
357359
}
358360

359361
/**

hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/bucket/S3BucketCreateRequest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,8 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager,
179179
VolumeList volumeList = omMetadataManager.getUserTable().get(
180180
omMetadataManager.getUserKey(userName));
181181
volumeList = addVolumeToOwnerList(volumeList,
182-
volumeName, userName, ozoneManager.getMaxUserVolumeCount());
182+
volumeName, userName, ozoneManager.getMaxUserVolumeCount(),
183+
transactionLogIndex);
183184
createVolume(omMetadataManager, omVolumeArgs, volumeList, volumeKey,
184185
omMetadataManager.getUserKey(userName), transactionLogIndex);
185186
volumeCreated = true;

hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/volume/OMVolumeCreateRequest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager,
151151
String dbUserKey = omMetadataManager.getUserKey(owner);
152152
volumeList = omMetadataManager.getUserTable().get(dbUserKey);
153153
volumeList = addVolumeToOwnerList(volumeList, volume, owner,
154-
ozoneManager.getMaxUserVolumeCount());
154+
ozoneManager.getMaxUserVolumeCount(), transactionLogIndex);
155155
createVolume(omMetadataManager, omVolumeArgs, volumeList, dbVolumeKey,
156156
dbUserKey, transactionLogIndex);
157157

hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/volume/OMVolumeDeleteRequest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,8 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager,
115115

116116
// delete the volume from the owner list
117117
// as well as delete the volume entry
118-
newVolumeList = delVolumeFromOwnerList(newVolumeList, volume, owner);
118+
newVolumeList = delVolumeFromOwnerList(newVolumeList, volume, owner,
119+
transactionLogIndex);
119120

120121
omMetadataManager.getUserTable().addCacheEntry(new CacheKey<>(dbUserKey),
121122
new CacheValue<>(Optional.of(newVolumeList), transactionLogIndex));

hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/volume/OMVolumeRequest.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,13 @@ public OMVolumeRequest(OMRequest omRequest) {
4848
* acquiring user lock.
4949
* @param volumeList - current volume list owned by user.
5050
* @param volume - volume which needs to deleted from the volume list.
51-
* @param owner
51+
* @param owner - Name of the Owner.
52+
* @param txID - The transaction ID that is updating this value.
5253
* @return VolumeList - updated volume list for the user.
5354
* @throws IOException
5455
*/
5556
protected VolumeList delVolumeFromOwnerList(VolumeList volumeList,
56-
String volume, String owner) throws IOException {
57+
String volume, String owner, long txID) throws IOException {
5758

5859
List<String> prevVolList = new ArrayList<>();
5960

@@ -68,7 +69,10 @@ protected VolumeList delVolumeFromOwnerList(VolumeList volumeList,
6869
// Remove the volume from the list
6970
prevVolList.remove(volume);
7071
VolumeList newVolList = VolumeList.newBuilder()
71-
.addAllVolumeNames(prevVolList).build();
72+
.addAllVolumeNames(prevVolList)
73+
.setObjectID(volumeList.getObjectID())
74+
.setUpdateID(txID)
75+
.build();
7276
return newVolList;
7377
}
7478

@@ -85,7 +89,8 @@ protected VolumeList delVolumeFromOwnerList(VolumeList volumeList,
8589
* maxUserVolumeCount, an exception is thrown.
8690
*/
8791
protected VolumeList addVolumeToOwnerList(VolumeList volumeList,
88-
String volume, String owner, long maxUserVolumeCount) throws IOException {
92+
String volume, String owner, long maxUserVolumeCount, long txID)
93+
throws IOException {
8994

9095
// Check the volume count
9196
if (volumeList != null &&
@@ -95,13 +100,18 @@ protected VolumeList addVolumeToOwnerList(VolumeList volumeList,
95100
}
96101

97102
List<String> prevVolList = new ArrayList<>();
103+
long objectID = txID;
98104
if (volumeList != null) {
99105
prevVolList.addAll(volumeList.getVolumeNamesList());
106+
objectID = volumeList.getObjectID();
100107
}
101108

109+
102110
// Add the new volume to the list
103111
prevVolList.add(volume);
104112
VolumeList newVolList = VolumeList.newBuilder()
113+
.setObjectID(objectID)
114+
.setUpdateID(txID)
105115
.addAllVolumeNames(prevVolList).build();
106116

107117
return newVolList;

hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/volume/OMVolumeSetOwnerRequest.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,14 +144,16 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager,
144144
omMetadataManager.getUserTable().get(oldOwner);
145145

146146
oldOwnerVolumeList = delVolumeFromOwnerList(
147-
oldOwnerVolumeList, volume, oldOwner);
147+
oldOwnerVolumeList, volume, oldOwner, transactionLogIndex);
148148

149149
newOwnerVolumeList = omMetadataManager.getUserTable().get(newOwner);
150150
newOwnerVolumeList = addVolumeToOwnerList(
151-
newOwnerVolumeList, volume, newOwner, maxUserVolumeCount);
151+
newOwnerVolumeList, volume, newOwner,
152+
maxUserVolumeCount, transactionLogIndex);
152153

153154
// Set owner with new owner name.
154155
omVolumeArgs.setOwnerName(newOwner);
156+
omVolumeArgs.setUpdateID(transactionLogIndex);
155157

156158
// Update cache.
157159
omMetadataManager.getUserTable().addCacheEntry(

hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/TestOMRequestUtils.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -266,8 +266,12 @@ public static List< HddsProtos.KeyValue> getMetadataList() {
266266
public static void addUserToDB(String volumeName, String ownerName,
267267
OMMetadataManager omMetadataManager) throws Exception {
268268
OzoneManagerProtocolProtos.VolumeList volumeList =
269-
OzoneManagerProtocolProtos.VolumeList.newBuilder()
270-
.addVolumeNames(volumeName).build();
269+
OzoneManagerProtocolProtos.VolumeList
270+
.newBuilder()
271+
.addVolumeNames(volumeName)
272+
.setObjectID(1)
273+
.setUpdateID(1)
274+
.build();
271275
omMetadataManager.getUserTable().put(
272276
omMetadataManager.getUserKey(ownerName), volumeList);
273277
}

hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/TestOMResponseUtils.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ public static S3BucketCreateResponse createS3BucketResponse(String userName,
5858

5959
OzoneManagerProtocolProtos.VolumeList volumeList =
6060
OzoneManagerProtocolProtos.VolumeList.newBuilder()
61+
.setObjectID(1)
62+
.setUpdateID(1)
6163
.addVolumeNames(volumeName).build();
6264

6365
OmVolumeArgs omVolumeArgs = OmVolumeArgs.newBuilder()

hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/volume/TestOMVolumeCreateResponse.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ public void testAddToDBBatch() throws Exception {
6969
String volumeName = UUID.randomUUID().toString();
7070
String userName = "user1";
7171
VolumeList volumeList = VolumeList.newBuilder()
72+
.setObjectID(1).setUpdateID(1)
7273
.addVolumeNames(volumeName).build();
7374

7475
OMResponse omResponse = OMResponse.newBuilder()

hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/volume/TestOMVolumeDeleteResponse.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@ public void testAddToDBBatch() throws Exception {
6969
String volumeName = UUID.randomUUID().toString();
7070
String userName = "user1";
7171
VolumeList volumeList = VolumeList.newBuilder()
72+
.setObjectID(1)
73+
.setUpdateID(1)
7274
.addVolumeNames(volumeName).build();
7375

7476
OMResponse omResponse = OMResponse.newBuilder()
@@ -85,7 +87,8 @@ public void testAddToDBBatch() throws Exception {
8587
new OMVolumeCreateResponse(omVolumeArgs, volumeList, omResponse);
8688

8789
// As we are deleting updated volume list should be empty.
88-
VolumeList updatedVolumeList = VolumeList.newBuilder().build();
90+
VolumeList updatedVolumeList = VolumeList.newBuilder()
91+
.setObjectID(1).setUpdateID(1).build();
8992
OMVolumeDeleteResponse omVolumeDeleteResponse =
9093
new OMVolumeDeleteResponse(volumeName, userName, updatedVolumeList,
9194
omResponse);

0 commit comments

Comments
 (0)