This is an automated email from the ASF dual-hosted git repository.
adoroszlai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/master by this push:
new abc3e1f889 HDDS-10138. NPE for SstFilteringService in
OMDBCheckpointServlet.Lock (#6015)
abc3e1f889 is described below
commit abc3e1f8897c7cd99e8000317bfa57d3a967212f
Author: Ivan Andika <[email protected]>
AuthorDate: Fri Jan 19 20:05:24 2024 +0800
HDDS-10138. NPE for SstFilteringService in OMDBCheckpointServlet.Lock
(#6015)
---
.../org/apache/hadoop/hdds/utils/db/RDBStore.java | 1 +
.../org/apache/hadoop/ozone/om/KeyManagerImpl.java | 2 ++
.../hadoop/ozone/om/OMDBCheckpointServlet.java | 38 ++++++++++++----------
3 files changed, 24 insertions(+), 17 deletions(-)
diff --git
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/RDBStore.java
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/RDBStore.java
index cfd5e4e394..47000f8cbc 100644
---
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/RDBStore.java
+++
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/RDBStore.java
@@ -197,6 +197,7 @@ public class RDBStore implements DBStore {
return snapshotsParentDir;
}
+ @Override
public RocksDBCheckpointDiffer getRocksDBCheckpointDiffer() {
return rocksDBCheckpointDiffer;
}
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/KeyManagerImpl.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/KeyManagerImpl.java
index 6e97ca2e75..9cfd404314 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/KeyManagerImpl.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/KeyManagerImpl.java
@@ -697,10 +697,12 @@ public class KeyManagerImpl implements KeyManager {
return multipartUploadCleanupService;
}
+ @Override
public SstFilteringService getSnapshotSstFilteringService() {
return snapshotSstFilteringService;
}
+ @Override
public SnapshotDeletingService getSnapshotDeletingService() {
return snapshotDeletingService;
}
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OMDBCheckpointServlet.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OMDBCheckpointServlet.java
index 2a7771fe60..3e6d706267 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OMDBCheckpointServlet.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OMDBCheckpointServlet.java
@@ -36,6 +36,7 @@ import org.apache.hadoop.ozone.om.snapshot.OmSnapshotUtils;
import org.apache.hadoop.security.UserGroupInformation;
import org.apache.ozone.rocksdiff.RocksDBCheckpointDiffer;
+import com.google.common.base.Preconditions;
import org.jetbrains.annotations.NotNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -644,29 +645,35 @@ public class OMDBCheckpointServlet extends
DBCheckpointServlet {
}
static class Lock extends BootstrapStateHandler.Lock {
- private final BootstrapStateHandler keyDeletingService;
- private final BootstrapStateHandler sstFilteringService;
- private final BootstrapStateHandler rocksDbCheckpointDiffer;
- private final BootstrapStateHandler snapshotDeletingService;
+ private final List<BootstrapStateHandler.Lock> locks;
private final OzoneManager om;
Lock(OzoneManager om) {
+ Preconditions.checkNotNull(om);
+ Preconditions.checkNotNull(om.getKeyManager());
+ Preconditions.checkNotNull(om.getMetadataManager());
+ Preconditions.checkNotNull(om.getMetadataManager().getStore());
+
this.om = om;
- keyDeletingService = om.getKeyManager().getDeletingService();
- sstFilteringService =
om.getKeyManager().getSnapshotSstFilteringService();
- rocksDbCheckpointDiffer = om.getMetadataManager().getStore()
- .getRocksDBCheckpointDiffer();
- snapshotDeletingService =
om.getKeyManager().getSnapshotDeletingService();
+
+ locks = Stream.of(
+ om.getKeyManager().getDeletingService(),
+ om.getKeyManager().getSnapshotSstFilteringService(),
+ om.getMetadataManager().getStore().getRocksDBCheckpointDiffer(),
+ om.getKeyManager().getSnapshotDeletingService()
+ )
+ .filter(Objects::nonNull)
+ .map(BootstrapStateHandler::getBootstrapStateLock)
+ .collect(Collectors.toList());
}
@Override
public BootstrapStateHandler.Lock lock()
throws InterruptedException {
// First lock all the handlers.
- keyDeletingService.getBootstrapStateLock().lock();
- sstFilteringService.getBootstrapStateLock().lock();
- rocksDbCheckpointDiffer.getBootstrapStateLock().lock();
- snapshotDeletingService.getBootstrapStateLock().lock();
+ for (BootstrapStateHandler.Lock lock : locks) {
+ lock.lock();
+ }
// Then wait for the double buffer to be flushed.
om.awaitDoubleBufferFlush();
@@ -675,10 +682,7 @@ public class OMDBCheckpointServlet extends
DBCheckpointServlet {
@Override
public void unlock() {
- snapshotDeletingService.getBootstrapStateLock().unlock();
- rocksDbCheckpointDiffer.getBootstrapStateLock().unlock();
- sstFilteringService.getBootstrapStateLock().unlock();
- keyDeletingService.getBootstrapStateLock().unlock();
+ locks.forEach(BootstrapStateHandler.Lock::unlock);
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]