From d5e86cdd9e41cf63e147c4811cf292fa4e7b58b7 Mon Sep 17 00:00:00 2001
From: abobrov <abobrov@localhost>
Date: Tue, 18 Mar 2008 11:24:26 +0000
Subject: [PATCH] - make the entry cache preload backend implementation specific moving EntryCachePreloader to JEB package and reworking it for JEB specific preload.
---
opends/src/server/org/opends/server/core/EntryCacheConfigManager.java | 31 ++++++++++++++++++++++++++-----
1 files changed, 26 insertions(+), 5 deletions(-)
diff --git a/opends/src/server/org/opends/server/core/EntryCacheConfigManager.java b/opends/src/server/org/opends/server/core/EntryCacheConfigManager.java
index c170166..12884c0 100644
--- a/opends/src/server/org/opends/server/core/EntryCacheConfigManager.java
+++ b/opends/src/server/org/opends/server/core/EntryCacheConfigManager.java
@@ -32,8 +32,11 @@
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
+import java.util.Set;
import java.util.SortedMap;
import java.util.TreeMap;
@@ -54,15 +57,16 @@
import org.opends.server.types.ResultCode;
import org.opends.messages.MessageBuilder;
import org.opends.server.admin.std.server.EntryCacheMonitorProviderCfg;
+import org.opends.server.api.Backend;
import org.opends.server.config.ConfigConstants;
import org.opends.server.config.ConfigEntry;
import org.opends.server.extensions.DefaultEntryCache;
-import org.opends.server.extensions.EntryCachePreloader;
import org.opends.server.monitors.EntryCacheMonitorProvider;
import org.opends.server.types.DN;
import static org.opends.server.loggers.debug.DebugLogger.*;
import static org.opends.server.loggers.ErrorLogger.*;
+import static org.opends.messages.ExtensionMessages.*;
import static org.opends.messages.ConfigMessages.*;
import static org.opends.server.util.StaticUtils.*;
@@ -228,10 +232,27 @@
}
// If requested preload the entry cache.
- if (rootConfiguration.getGlobalConfiguration().isEntryCachePreload()) {
- // Kick off preload arbiter main thread.
- EntryCachePreloader preloadThread = new EntryCachePreloader();
- preloadThread.start();
+ if (rootConfiguration.getGlobalConfiguration().isEntryCachePreload() &&
+ !cacheOrderMap.isEmpty()) {
+ // Preload from every active public backend.
+ Map<DN, Backend> baseDNMap =
+ DirectoryServer.getPublicNamingContexts();
+ Set<Backend> proccessedBackends = new HashSet<Backend>();
+ for (Backend backend : baseDNMap.values()) {
+ if (!proccessedBackends.contains(backend)) {
+ proccessedBackends.add(backend);
+ try {
+ backend.preloadEntryCache();
+ } catch (UnsupportedOperationException ex) {
+ // Some backend implementations might not support entry
+ // cache preload. Log a warning and continue.
+ Message message = WARN_CACHE_PRELOAD_BACKEND_FAILED.get(
+ backend.getBackendID());
+ logError(message);
+ continue;
+ }
+ }
+ }
}
}
--
Gitblit v1.10.0