From 08f9243b55eb5f0f8030eebe976a0d85ffbd44c2 Mon Sep 17 00:00:00 2001
From: ludovicp <ludovicp@localhost>
Date: Fri, 30 Jul 2010 15:11:25 +0000
Subject: [PATCH] Implements a configurable limit in the number of persistent searches a server can handle.

---
 opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendSearchOperation.java |   11 ++++++++++-
 1 files changed, 10 insertions(+), 1 deletions(-)

diff --git a/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendSearchOperation.java b/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendSearchOperation.java
index 6e6a124..ae387e4 100644
--- a/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendSearchOperation.java
+++ b/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendSearchOperation.java
@@ -22,7 +22,7 @@
  * CDDL HEADER END
  *
  *
- *      Copyright 2008-2009 Sun Microsystems, Inc.
+ *      Copyright 2008-2010 Sun Microsystems, Inc.
  */
 package org.opends.server.workflowelement.localbackend;
 
@@ -251,6 +251,15 @@
       // If there's a persistent search, then register it with the server.
       if (persistentSearch != null)
       {
+        //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());
+          break searchProcessing;
+        }
         wfe.registerPersistentSearch(persistentSearch);
         persistentSearch.enable();
       }

--
Gitblit v1.10.0