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 ef374aad3e HDDS-11139. Avoid unnecessary object creation in OM request
validator (#6926)
ef374aad3e is described below
commit ef374aad3e98af253042ba558245c9cf6be2a428
Author: Doroszlai, Attila <[email protected]>
AuthorDate: Fri Jul 12 07:28:51 2024 +0200
HDDS-11139. Avoid unnecessary object creation in OM request validator
(#6926)
---
.../om/request/validation/RequestValidations.java | 4 ++--
.../om/request/validation/ValidatorRegistry.java | 22 +++++++++-------------
2 files changed, 11 insertions(+), 15 deletions(-)
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/validation/RequestValidations.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/validation/RequestValidations.java
index 248505cd47..b9fbb0c927 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/validation/RequestValidations.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/validation/RequestValidations.java
@@ -65,7 +65,7 @@ public class RequestValidations {
List<Method> validations = registry.validationsFor(
conditions(request), request.getCmdType(), PRE_PROCESS);
- OMRequest validatedRequest = request.toBuilder().build();
+ OMRequest validatedRequest = request;
try {
for (Method m : validations) {
LOG.debug("Running the {} request pre-process validation from {}.{}",
@@ -90,7 +90,7 @@ public class RequestValidations {
List<Method> validations = registry.validationsFor(
conditions(request), request.getCmdType(), POST_PROCESS);
- OMResponse validatedResponse = response.toBuilder().build();
+ OMResponse validatedResponse = response;
try {
for (Method m : validations) {
LOG.debug("Running the {} request post-process validation from {}.{}",
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/validation/ValidatorRegistry.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/validation/ValidatorRegistry.java
index 610949e0f8..ac09664cc7 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/validation/ValidatorRegistry.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/validation/ValidatorRegistry.java
@@ -18,7 +18,7 @@ package org.apache.hadoop.ozone.om.request.validation;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.Type;
import org.reflections.Reflections;
-import org.reflections.scanners.MethodAnnotationsScanner;
+import org.reflections.scanners.Scanners;
import org.reflections.util.ClasspathHelper;
import org.reflections.util.ConfigurationBuilder;
@@ -32,6 +32,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.function.Supplier;
import static
org.apache.hadoop.ozone.om.request.validation.RequestProcessingPhase.POST_PROCESS;
import static
org.apache.hadoop.ozone.om.request.validation.RequestProcessingPhase.PRE_PROCESS;
@@ -70,7 +71,7 @@ public class ValidatorRegistry {
ValidatorRegistry(Collection<URL> searchUrls) {
Reflections reflections = new Reflections(new ConfigurationBuilder()
.setUrls(searchUrls)
- .setScanners(new MethodAnnotationsScanner())
+ .setScanners(Scanners.MethodsAnnotated)
.setParallel(true)
);
@@ -157,13 +158,13 @@ public class ValidatorRegistry {
for (ValidationCondition condition : descriptor.conditions()) {
EnumMap<Type, EnumMap<RequestProcessingPhase, List<Method>>>
requestTypeMap = getAndInitialize(
- condition, newTypeMap(), validators);
+ condition, this::newTypeMap, validators);
EnumMap<RequestProcessingPhase, List<Method>> phases =
getAndInitialize(
- descriptor.requestType(), newPhaseMap(), requestTypeMap);
+ descriptor.requestType(), this::newPhaseMap, requestTypeMap);
if (isPreProcessValidator(descriptor)) {
- getAndInitialize(PRE_PROCESS, new ArrayList<>(), phases).add(m);
+ getAndInitialize(PRE_PROCESS, ArrayList::new, phases).add(m);
} else if (isPostProcessValidator(descriptor)) {
- getAndInitialize(POST_PROCESS, new ArrayList<>(), phases).add(m);
+ getAndInitialize(POST_PROCESS, ArrayList::new, phases).add(m);
}
}
}
@@ -178,13 +179,8 @@ public class ValidatorRegistry {
return new EnumMap<>(RequestProcessingPhase.class);
}
- private <K, V> V getAndInitialize(K key, V defaultValue, Map<K, V> from) {
- V inMapValue = from.get(key);
- if (inMapValue == null || !from.containsKey(key)) {
- from.put(key, defaultValue);
- return defaultValue;
- }
- return inMapValue;
+ private <K, V> V getAndInitialize(K key, Supplier<V> defaultSupplier, Map<K,
V> from) {
+ return from.computeIfAbsent(key, k -> defaultSupplier.get());
}
private boolean isPreProcessValidator(RequestFeatureValidator descriptor) {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]