From ef7cdd5aa70dceb875c5cdc567be77261342d23b Mon Sep 17 00:00:00 2001
From: abobrov <abobrov@localhost>
Date: Thu, 10 Sep 2009 02:06:28 +0000
Subject: [PATCH] - use atomics instead of synchronized.

---
 opends/src/server/org/opends/server/core/networkgroups/NetworkGroupStatistics.java |  149 ++++++++++++++++++++++++-------------------------
 1 files changed, 72 insertions(+), 77 deletions(-)

diff --git a/opends/src/server/org/opends/server/core/networkgroups/NetworkGroupStatistics.java b/opends/src/server/org/opends/server/core/networkgroups/NetworkGroupStatistics.java
index 58d2874..3dda4ee 100644
--- a/opends/src/server/org/opends/server/core/networkgroups/NetworkGroupStatistics.java
+++ b/opends/src/server/org/opends/server/core/networkgroups/NetworkGroupStatistics.java
@@ -29,6 +29,7 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.concurrent.atomic.AtomicLong;
 import org.opends.messages.Message;
 import org.opends.server.admin.std.server.MonitorProviderCfg;
 import org.opends.server.api.MonitorProvider;
@@ -53,18 +54,17 @@
   private final String instanceName;
   private final NetworkGroup networkGroup;
 
-  private final Object lock = new Object();
-  private long abandonRequests = 0;
-  private long addRequests = 0;
-  private long bindRequests = 0;
-  private long compareRequests = 0;
-  private long deleteRequests = 0;
-  private long extendedRequests = 0;
-  private long modifyRequests = 0;
-  private long modifyDNRequests = 0;
-  private long searchOneRequests = 0;
-  private long searchSubRequests = 0;
-  private long unbindRequests = 0;
+  private AtomicLong abandonRequests = new AtomicLong(0);
+  private AtomicLong addRequests = new AtomicLong(0);
+  private AtomicLong bindRequests = new AtomicLong(0);
+  private AtomicLong compareRequests = new AtomicLong(0);
+  private AtomicLong deleteRequests = new AtomicLong(0);
+  private AtomicLong extendedRequests = new AtomicLong(0);
+  private AtomicLong modifyRequests = new AtomicLong(0);
+  private AtomicLong modifyDNRequests = new AtomicLong(0);
+  private AtomicLong searchOneRequests = new AtomicLong(0);
+  private AtomicLong searchSubRequests = new AtomicLong(0);
+  private AtomicLong unbindRequests = new AtomicLong(0);
 
   /**
    * Constructor.
@@ -92,47 +92,44 @@
    * managed by the network group.
    */
   public void updateMessageRead(LDAPMessage message) {
-    synchronized (lock)
+    switch (message.getProtocolOp().getType())
     {
-      switch (message.getProtocolOp().getType())
-      {
-        case OP_TYPE_ABANDON_REQUEST:
-          abandonRequests++;
-          break;
-        case OP_TYPE_ADD_REQUEST:
-          addRequests++;
-          break;
-        case OP_TYPE_BIND_REQUEST:
-          bindRequests++;
-          break;
-        case OP_TYPE_COMPARE_REQUEST:
-          compareRequests++;
-          break;
-        case OP_TYPE_DELETE_REQUEST:
-          deleteRequests++;
-          break;
-        case OP_TYPE_EXTENDED_REQUEST:
-          extendedRequests++;
-          break;
-        case OP_TYPE_MODIFY_REQUEST:
-          modifyRequests++;
-          break;
-        case OP_TYPE_MODIFY_DN_REQUEST:
-          modifyDNRequests++;
-          break;
-        case OP_TYPE_SEARCH_REQUEST:
-          SearchScope scope = message.getSearchRequestProtocolOp().getScope();
-          if (scope == SearchScope.BASE_OBJECT
-              || scope == SearchScope.SINGLE_LEVEL) {
-            searchOneRequests++;
-          } else {
-            searchSubRequests++;
-          }
-          break;
-        case OP_TYPE_UNBIND_REQUEST:
-          unbindRequests++;
-          break;
-      }
+      case OP_TYPE_ABANDON_REQUEST:
+        abandonRequests.getAndIncrement();
+        break;
+      case OP_TYPE_ADD_REQUEST:
+        addRequests.getAndIncrement();
+        break;
+      case OP_TYPE_BIND_REQUEST:
+        bindRequests.getAndIncrement();
+        break;
+      case OP_TYPE_COMPARE_REQUEST:
+        compareRequests.getAndIncrement();
+        break;
+      case OP_TYPE_DELETE_REQUEST:
+        deleteRequests.getAndIncrement();
+        break;
+      case OP_TYPE_EXTENDED_REQUEST:
+        extendedRequests.getAndIncrement();
+        break;
+      case OP_TYPE_MODIFY_REQUEST:
+        modifyRequests.getAndIncrement();
+        break;
+      case OP_TYPE_MODIFY_DN_REQUEST:
+        modifyDNRequests.getAndIncrement();
+        break;
+      case OP_TYPE_SEARCH_REQUEST:
+        SearchScope scope = message.getSearchRequestProtocolOp().getScope();
+        if (scope == SearchScope.BASE_OBJECT
+            || scope == SearchScope.SINGLE_LEVEL) {
+          searchOneRequests.getAndIncrement();
+        } else {
+          searchSubRequests.getAndIncrement();
+        }
+        break;
+      case OP_TYPE_UNBIND_REQUEST:
+        unbindRequests.getAndIncrement();
+        break;
     }
   }
 
@@ -214,31 +211,29 @@
               .valueOf(rlpStatistics.getTotalClientConnections())));
     }
 
-    synchronized(lock) {
-      attrs.add(Attributes.create("ds-mon-abandon-operations-total-count",
-          String.valueOf(abandonRequests)));
-      attrs.add(Attributes.create("ds-mon-add-operations-total-count",
-          String.valueOf(addRequests)));
-      attrs.add(Attributes.create("ds-mon-bind-operations-total-count",
-          String.valueOf(bindRequests)));
-      attrs.add(Attributes.create("ds-mon-compare-operations-total-count",
-          String.valueOf(compareRequests)));
-      attrs.add(Attributes.create("ds-mon-delete-operations-total-count",
-          String.valueOf(deleteRequests)));
-      attrs.add(Attributes.create("ds-mon-extended-operations-total-count",
-          String.valueOf(extendedRequests)));
-      attrs.add(Attributes.create("ds-mon-mod-operations-total-count",
-          String.valueOf(modifyRequests)));
-      attrs.add(Attributes.create("ds-mon-moddn-operations-total-count",
-          String.valueOf(modifyDNRequests)));
-      attrs.add(Attributes.create(
-          "ds-mon-searchonelevel-operations-total-count",
-          String.valueOf(searchOneRequests)));
-      attrs.add(Attributes.create("ds-mon-searchsubtree-operations-total-count",
-          String.valueOf(searchSubRequests)));
-      attrs.add(Attributes.create("ds-mon-unbind-operations-total-count",
-          String.valueOf(unbindRequests)));
-    }
+    attrs.add(Attributes.create("ds-mon-abandon-operations-total-count",
+        String.valueOf(abandonRequests.get())));
+    attrs.add(Attributes.create("ds-mon-add-operations-total-count",
+        String.valueOf(addRequests.get())));
+    attrs.add(Attributes.create("ds-mon-bind-operations-total-count",
+        String.valueOf(bindRequests.get())));
+    attrs.add(Attributes.create("ds-mon-compare-operations-total-count",
+        String.valueOf(compareRequests.get())));
+    attrs.add(Attributes.create("ds-mon-delete-operations-total-count",
+        String.valueOf(deleteRequests.get())));
+    attrs.add(Attributes.create("ds-mon-extended-operations-total-count",
+        String.valueOf(extendedRequests.get())));
+    attrs.add(Attributes.create("ds-mon-mod-operations-total-count",
+        String.valueOf(modifyRequests.get())));
+    attrs.add(Attributes.create("ds-mon-moddn-operations-total-count",
+        String.valueOf(modifyDNRequests.get())));
+    attrs.add(Attributes.create(
+        "ds-mon-searchonelevel-operations-total-count",
+        String.valueOf(searchOneRequests.get())));
+    attrs.add(Attributes.create("ds-mon-searchsubtree-operations-total-count",
+        String.valueOf(searchSubRequests.get())));
+    attrs.add(Attributes.create("ds-mon-unbind-operations-total-count",
+        String.valueOf(unbindRequests.get())));
 
     attrs.add(Attributes.create("ds-mon-discarded-referrals-total-count",
         "Not implemented"));

--
Gitblit v1.10.0