mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

ludovicp
30.11.2010 736970ac5ce7810bc08b1c6a849a899f8c3af431
opendj-sdk/opends/src/server/org/opends/server/extensions/ParallelWorkQueue.java
@@ -104,6 +104,9 @@
  // a configuration change has not been completely applied).
  private int numWorkerThreads;
   // The number of maximum allowed persistent searches.
  private int maxPSearches;
  // The queue that will be used to actually hold the pending operations.
  private ConcurrentLinkedQueue<AbstractOperation> opQueue;
@@ -142,6 +145,17 @@
    // Get the necessary configuration from the provided entry.
    numWorkerThreads = getNumWorkerThreads(configuration);
    //Check the value of the maximum persistent searches attribute.
    //We don't allow a value greater than the number of threads.
    maxPSearches = configuration.getMaxPsearches()==null?
      numWorkerThreads:configuration.getMaxPsearches();
    if(maxPSearches >  numWorkerThreads)
    {
      Message message = ERR_CONFIG_CORE_INVALID_MAX_PSEARCH_LIMIT.get(
              maxPSearches, numWorkerThreads, numWorkerThreads);
      throw new ConfigException(message);
    }
    // Create the actual work queue.
    opQueue = new ConcurrentLinkedQueue<AbstractOperation>();
@@ -498,7 +512,19 @@
                      ParallelWorkQueueCfg configuration,
                      List<Message> unacceptableReasons)
  {
    // The provided configuration will always be acceptable.
    //Check if the max persistent search value is under limit.
    if(configuration.getMaxPsearches() !=null)
    {
      int nPSearches = configuration.getMaxPsearches();
      int nWorkerThreads = getNumWorkerThreads(configuration);
      if(nPSearches >  nWorkerThreads)
      {
        Message message = ERR_CONFIG_CORE_INVALID_MAX_PSEARCH_LIMIT.get(
                nPSearches, nWorkerThreads, nWorkerThreads);
        unacceptableReasons.add(message);
        return false;
      }
    }
    return true;
  }
@@ -550,6 +576,9 @@
        }
      }
    }
     //Get the new maximum psearch value.
     maxPSearches = configuration.getMaxPsearches()==null?
      numWorkerThreads:configuration.getMaxPsearches();
    return new ConfigChangeResult(ResultCode.SUCCESS, false, resultMessages);
  }
@@ -582,6 +611,16 @@
  /**
   * {@inheritDoc}
   */
  public int getMaxPersistentSearchLimit()
  {
    return maxPSearches;
  }
  // Determine the number of worker threads.
  private int getNumWorkerThreads(ParallelWorkQueueCfg configuration)
  {