From ef384e41122d87682404ecbc1e0ff95d1a3a4402 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Mon, 22 Sep 2014 20:12:28 +0000
Subject: [PATCH] OPENDJ-1548 (CR-4579) In changelog backend, persistent searches should perform the same validations as normal searches
---
opendj3-server-dev/src/server/org/opends/server/workflowelement/localbackend/LocalBackendSearchOperation.java | 47 +++++++++++++++++++++++------------------------
opendj3-server-dev/src/server/org/opends/server/api/Backend.java | 4 +++-
2 files changed, 26 insertions(+), 25 deletions(-)
diff --git a/opendj3-server-dev/src/server/org/opends/server/api/Backend.java b/opendj3-server-dev/src/server/org/opends/server/api/Backend.java
index 65bc052..7300fca 100644
--- a/opendj3-server-dev/src/server/org/opends/server/api/Backend.java
+++ b/opendj3-server-dev/src/server/org/opends/server/api/Backend.java
@@ -912,8 +912,10 @@
*
* @param persistentSearch
* The persistent search operation to register with this backend
+ * @throws DirectoryException
+ * If a problem occurs while registering the persistent search
*/
- public void registerPersistentSearch(PersistentSearch persistentSearch)
+ public void registerPersistentSearch(PersistentSearch persistentSearch) throws DirectoryException
{
persistentSearches.add(persistentSearch);
diff --git a/opendj3-server-dev/src/server/org/opends/server/workflowelement/localbackend/LocalBackendSearchOperation.java b/opendj3-server-dev/src/server/org/opends/server/workflowelement/localbackend/LocalBackendSearchOperation.java
index 83c0fd2..a62b57d 100644
--- a/opendj3-server-dev/src/server/org/opends/server/workflowelement/localbackend/LocalBackendSearchOperation.java
+++ b/opendj3-server-dev/src/server/org/opends/server/workflowelement/localbackend/LocalBackendSearchOperation.java
@@ -219,34 +219,33 @@
// will be overwritten.
setResultCode(ResultCode.SUCCESS);
-
- // If there's a persistent search, then register it with the server.
- boolean processSearchNow = true;
- if (persistentSearch != null)
- {
- // If we're only interested in changes, then we do not actually want
- // to process the search now.
- processSearchNow = !persistentSearch.isChangesOnly();
-
- // The Core server maintains the count of concurrent persistent searches
- // so that all the backends (Remote and Local) are aware of it. Verify
- // with the core if we have already reached the threshold.
- if (!DirectoryServer.allowNewPersistentSearch())
- {
- setResultCode(ResultCode.ADMIN_LIMIT_EXCEEDED);
- appendErrorMessage(ERR_MAX_PSEARCH_LIMIT_EXCEEDED.get());
- return;
- }
- backend.registerPersistentSearch(persistentSearch);
- persistentSearch.enable();
- }
-
-
- // Process the search in the backend and all its subordinates.
try
{
+ // If there's a persistent search, then register it with the server.
+ boolean processSearchNow = true;
+ if (persistentSearch != null)
+ {
+ // If we're only interested in changes, then we do not actually want
+ // to process the search now.
+ processSearchNow = !persistentSearch.isChangesOnly();
+
+ // The Core server maintains the count of concurrent persistent searches
+ // so that all the backends (Remote and Local) are aware of it. Verify
+ // with the core if we have already reached the threshold.
+ if (!DirectoryServer.allowNewPersistentSearch())
+ {
+ setResultCode(ResultCode.ADMIN_LIMIT_EXCEEDED);
+ appendErrorMessage(ERR_MAX_PSEARCH_LIMIT_EXCEEDED.get());
+ return;
+ }
+ backend.registerPersistentSearch(persistentSearch);
+ persistentSearch.enable();
+ }
+
+
if (processSearchNow)
{
+ // Process the search in the backend and all its subordinates.
backend.search(this);
}
}
--
Gitblit v1.10.0