Skip to content

Commit

Permalink
Merge pull request #1845 from apache/OAK-11248
Browse files Browse the repository at this point in the history
OAK-11248 : closing all features in one single loop
  • Loading branch information
rishabhdaim authored Nov 6, 2024
2 parents 3fb2f9e + ed69336 commit f436d47
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.function.Predicate;
Expand Down Expand Up @@ -660,29 +661,8 @@ protected void deactivate() {
journalPropertyHandlerFactory.stop();
}

if (prefetchFeature != null) {
prefetchFeature.close();
}

if (docStoreThrottlingFeature != null) {
docStoreThrottlingFeature.close();
}

if (cancelInvalidationFeature != null) {
cancelInvalidationFeature.close();
}

if (docStoreFullGCFeature != null) {
docStoreFullGCFeature.close();
}

if (docStoreEmbeddedVerificationFeature != null) {
docStoreEmbeddedVerificationFeature.close();
}

if (prevNoPropCacheFeature != null) {
prevNoPropCacheFeature.close();
}
closeFeatures(prefetchFeature, docStoreThrottlingFeature, cancelInvalidationFeature, docStoreFullGCFeature,
docStoreEmbeddedVerificationFeature, prevNoPropCacheFeature);

unregisterNodeStore();
}
Expand Down Expand Up @@ -788,6 +768,19 @@ protected void unbindNodeStateCache(DocumentNodeStateCache nodeStateCache) {
}
}

/**
* Closes the given varargs of features.
* <p>
* This method iterates over the provided varargs of features and closes each one
* that is not null.
* </p>
*
* @param features a varargs of {@link Feature} objects to be closed.
*/
private void closeFeatures(@NotNull final Feature... features) {
Arrays.stream(features).filter(Objects::nonNull).forEach(Feature::close);
}

private void unregisterNodeStore() {
deactivationTimestamp = System.currentTimeMillis();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,12 @@

import java.io.File;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Supplier;

import org.apache.commons.lang3.reflect.MethodUtils;
import org.apache.jackrabbit.guava.common.collect.Maps;
import com.mongodb.MongoClient;

Expand All @@ -31,6 +33,7 @@
import org.apache.jackrabbit.oak.plugins.document.spi.JournalPropertyService;
import org.apache.jackrabbit.oak.plugins.document.spi.lease.LeaseFailureHandler;
import org.apache.jackrabbit.oak.spi.state.NodeStore;
import org.apache.jackrabbit.oak.spi.toggle.Feature;
import org.apache.jackrabbit.oak.stats.StatisticsProvider;
import org.apache.sling.testing.mock.osgi.MockOsgi;
import org.apache.sling.testing.mock.osgi.junit.OsgiContext;
Expand All @@ -45,6 +48,7 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static org.junit.Assume.assumeTrue;
Expand Down Expand Up @@ -356,6 +360,19 @@ public void recoveryDelayMillisMinute() {
doRecoveryDelayMillis(60000);
}

@Test
public void closeFeatures() throws InvocationTargetException, IllegalAccessException, NoSuchMethodException {
Feature feature1 = mock(Feature.class);
Feature feature2 = mock(Feature.class);
Feature feature3 = mock(Feature.class);
Feature feature4 = mock(Feature.class);

// successful invocation would return null
assertNull(MethodUtils.invokeMethod(service, true, "closeFeatures",
new Object[]{feature1, feature2, null, feature3, feature4},
new Class[]{Feature[].class}));
}

private void doRecoveryDelayMillis(long recoveryDelayMillis) {
Map<String, Object> config = newConfig(repoHome);
config.put("recoveryDelayMillis", recoveryDelayMillis);
Expand Down

0 comments on commit f436d47

Please sign in to comment.