From 065c1ae206bec7f9dcdd394f5fe06ab8e4005655 Mon Sep 17 00:00:00 2001
From: ludovicp <ludovicp@localhost>
Date: Mon, 07 Jun 2010 09:12:48 +0000
Subject: [PATCH] Fix issue #2748. This patch changes the place where messages are logged to ensure correct ordering: - Request handler now logs the connect messages before registering the read interest. - Worker threads logs the response messages before sending it to the client.
---
opends/src/server/org/opends/server/core/SearchOperationBasis.java | 17 ++++----
opends/src/server/org/opends/server/loggers/TextAccessLogPublisher.java | 4 +-
opends/src/server/org/opends/server/core/AddOperationBasis.java | 6 +-
opends/src/server/org/opends/server/core/CompareOperationBasis.java | 9 ++--
opends/src/server/org/opends/server/core/BindOperationBasis.java | 8 ++--
opends/src/server/org/opends/server/core/ExtendedOperationBasis.java | 8 ++--
opends/src/server/org/opends/server/core/DeleteOperationBasis.java | 8 ++--
opends/src/server/org/opends/server/protocols/ldap/LDAPConnectionHandler.java | 4 -
opends/src/server/org/opends/server/protocols/ldap/LDAPRequestHandler.java | 2 +
opends/src/server/org/opends/server/core/ModifyDNOperationBasis.java | 8 ++--
opends/src/server/org/opends/server/core/ModifyOperationBasis.java | 8 ++--
11 files changed, 41 insertions(+), 41 deletions(-)
diff --git a/opends/src/server/org/opends/server/core/AddOperationBasis.java b/opends/src/server/org/opends/server/core/AddOperationBasis.java
index b3ed353..39bc471 100644
--- a/opends/src/server/org/opends/server/core/AddOperationBasis.java
+++ b/opends/src/server/org/opends/server/core/AddOperationBasis.java
@@ -782,6 +782,9 @@
// Stop the processing timer.
setProcessingStopTime();
+ // Log the add response message.
+ logAddResponse(this);
+
if(cancelRequest == null || cancelResult == null ||
cancelResult.getResultCode() != ResultCode.CANCELED ||
cancelRequest.notifyOriginalRequestor() ||
@@ -791,9 +794,6 @@
}
- // Log the add response message.
- logAddResponse(this);
-
// Invoke the post-response callbacks.
if (workflowExecuted) {
invokePostResponseCallbacks();
diff --git a/opends/src/server/org/opends/server/core/BindOperationBasis.java b/opends/src/server/org/opends/server/core/BindOperationBasis.java
index 44e8797..07a7ff9 100644
--- a/opends/src/server/org/opends/server/core/BindOperationBasis.java
+++ b/opends/src/server/org/opends/server/core/BindOperationBasis.java
@@ -22,7 +22,7 @@
* CDDL HEADER END
*
*
- * Copyright 2007-2009 Sun Microsystems, Inc.
+ * Copyright 2007-2010 Sun Microsystems, Inc.
*/
package org.opends.server.core;
import org.opends.messages.Message;
@@ -836,6 +836,9 @@
// Stop the processing timer.
setProcessingStopTime();
+ // Log the bind response.
+ logBindResponse(this);
+
// Send the bind response to the client.
clientConnection.sendResponse(this);
@@ -848,9 +851,6 @@
clientConnection.finishBindOrStartTLS();
- // Log the bind response.
- logBindResponse(this);
-
// Invoke the post-response bind plugins.
invokePostResponsePlugins(workflowExecuted);
}
diff --git a/opends/src/server/org/opends/server/core/CompareOperationBasis.java b/opends/src/server/org/opends/server/core/CompareOperationBasis.java
index b038e85..37625eb 100644
--- a/opends/src/server/org/opends/server/core/CompareOperationBasis.java
+++ b/opends/src/server/org/opends/server/core/CompareOperationBasis.java
@@ -22,7 +22,7 @@
* CDDL HEADER END
*
*
- * Copyright 2007-2009 Sun Microsystems, Inc.
+ * Copyright 2007-2010 Sun Microsystems, Inc.
*/
package org.opends.server.core;
import org.opends.messages.MessageBuilder;
@@ -587,6 +587,9 @@
// Stop the processing timer.
setProcessingStopTime();
+ // Log the compare response message.
+ logCompareResponse(this);
+
if(cancelRequest == null || cancelResult == null ||
cancelResult.getResultCode() != ResultCode.CANCELED ||
cancelRequest.notifyOriginalRequestor() ||
@@ -595,10 +598,6 @@
clientConnection.sendResponse(this);
}
-
- // Log the compare response message.
- logCompareResponse(this);
-
// Invoke the post-response compare plugins.
invokePostResponsePlugins(workflowExecuted);
diff --git a/opends/src/server/org/opends/server/core/DeleteOperationBasis.java b/opends/src/server/org/opends/server/core/DeleteOperationBasis.java
index 9b9a733..20e8d2b 100644
--- a/opends/src/server/org/opends/server/core/DeleteOperationBasis.java
+++ b/opends/src/server/org/opends/server/core/DeleteOperationBasis.java
@@ -22,7 +22,7 @@
* CDDL HEADER END
*
*
- * Copyright 2007-2008 Sun Microsystems, Inc.
+ * Copyright 2007-2010 Sun Microsystems, Inc.
*/
package org.opends.server.core;
import org.opends.messages.MessageBuilder;
@@ -435,6 +435,9 @@
// Stop the processing timer.
setProcessingStopTime();
+ // Log the delete response.
+ logDeleteResponse(this);
+
if(cancelRequest == null || cancelResult == null ||
cancelResult.getResultCode() != ResultCode.CANCELED ||
cancelRequest.notifyOriginalRequestor() ||
@@ -444,9 +447,6 @@
}
- // Log the delete response.
- logDeleteResponse(this);
-
// Invoke the post-response callbacks.
if (workflowExecuted) {
invokePostResponseCallbacks();
diff --git a/opends/src/server/org/opends/server/core/ExtendedOperationBasis.java b/opends/src/server/org/opends/server/core/ExtendedOperationBasis.java
index 3764c5d..be376fb 100644
--- a/opends/src/server/org/opends/server/core/ExtendedOperationBasis.java
+++ b/opends/src/server/org/opends/server/core/ExtendedOperationBasis.java
@@ -22,7 +22,7 @@
* CDDL HEADER END
*
*
- * Copyright 2006-2009 Sun Microsystems, Inc.
+ * Copyright 2006-2010 Sun Microsystems, Inc.
*/
package org.opends.server.core;
import org.opends.messages.MessageBuilder;
@@ -520,6 +520,9 @@
// Stop the processing timer.
setProcessingStopTime();
+ // Log the extended response.
+ logExtendedResponse(this);
+
// Send the response to the client.
if(cancelRequest == null || cancelResult == null ||
cancelResult.getResultCode() != ResultCode.CANCELED ||
@@ -534,9 +537,6 @@
clientConnection.finishBindOrStartTLS();
}
- // Log the extended response.
- logExtendedResponse(this);
-
// Invoke the post-response extended plugins.
pluginConfigManager.invokePostResponseExtendedPlugins(this);
diff --git a/opends/src/server/org/opends/server/core/ModifyDNOperationBasis.java b/opends/src/server/org/opends/server/core/ModifyDNOperationBasis.java
index ca97939..cf19f56 100644
--- a/opends/src/server/org/opends/server/core/ModifyDNOperationBasis.java
+++ b/opends/src/server/org/opends/server/core/ModifyDNOperationBasis.java
@@ -22,7 +22,7 @@
* CDDL HEADER END
*
*
- * Copyright 2006-2009 Sun Microsystems, Inc.
+ * Copyright 2006-2010 Sun Microsystems, Inc.
*/
package org.opends.server.core;
import org.opends.messages.MessageBuilder;
@@ -651,6 +651,9 @@
// Stop the processing timer.
setProcessingStopTime();
+ // Log the modify DN response.
+ logModifyDNResponse(this);
+
if(cancelRequest == null || cancelResult == null ||
cancelResult.getResultCode() != ResultCode.CANCELED ||
cancelRequest.notifyOriginalRequestor() ||
@@ -659,9 +662,6 @@
clientConnection.sendResponse(this);
}
- // Log the modify DN response.
- logModifyDNResponse(this);
-
// Invoke the post-response callbacks.
if (workflowExecuted) {
invokePostResponseCallbacks();
diff --git a/opends/src/server/org/opends/server/core/ModifyOperationBasis.java b/opends/src/server/org/opends/server/core/ModifyOperationBasis.java
index 4c96dfe..076ba59 100644
--- a/opends/src/server/org/opends/server/core/ModifyOperationBasis.java
+++ b/opends/src/server/org/opends/server/core/ModifyOperationBasis.java
@@ -22,7 +22,7 @@
* CDDL HEADER END
*
*
- * Copyright 2007-2009 Sun Microsystems, Inc.
+ * Copyright 2007-2010 Sun Microsystems, Inc.
*/
package org.opends.server.core;
@@ -536,6 +536,9 @@
// Stop the processing timer.
setProcessingStopTime();
+ // Log the modify response.
+ logModifyResponse(this);
+
if(cancelRequest == null || cancelResult == null ||
cancelResult.getResultCode() != ResultCode.CANCELED ||
cancelRequest.notifyOriginalRequestor() ||
@@ -544,9 +547,6 @@
clientConnection.sendResponse(this);
}
- // Log the modify response.
- logModifyResponse(this);
-
// Invoke the post-response callbacks.
if (workflowExecuted) {
invokePostResponseCallbacks();
diff --git a/opends/src/server/org/opends/server/core/SearchOperationBasis.java b/opends/src/server/org/opends/server/core/SearchOperationBasis.java
index d1d2ba1..715c3fb 100644
--- a/opends/src/server/org/opends/server/core/SearchOperationBasis.java
+++ b/opends/src/server/org/opends/server/core/SearchOperationBasis.java
@@ -22,7 +22,7 @@
* CDDL HEADER END
*
*
- * Copyright 2006-2009 Sun Microsystems, Inc.
+ * Copyright 2006-2010 Sun Microsystems, Inc.
*/
package org.opends.server.core;
@@ -811,11 +811,12 @@
// Send the entry to the client.
if (pluginResult.sendResponse())
{
+ // Log the entry sent to the client.
+ logSearchResultEntry(this, searchEntry);
+
try
{
sendSearchEntry(searchEntry);
- // Log the entry sent to the client.
- logSearchResultEntry(this, searchEntry);
incrementEntriesSent();
}
@@ -889,12 +890,13 @@
// to send any more.
if (pluginResult.sendResponse())
{
+ // Log the entry sent to the client.
+ logSearchResultReference(this, reference);
+
try
{
if (sendSearchReference(reference))
{
- // Log the entry sent to the client.
- logSearchResultReference(this, reference);
incrementReferencesSent();
// FIXME -- Should the size limit apply here?
@@ -931,12 +933,11 @@
// multithreaded in the event of a persistent search, so do it safely.
if (responseSent.compareAndSet(false, true))
{
- // Send the response to the client.
- clientConnection.sendResponse(this);
-
// Log the search result.
logSearchResultDone(this);
+ // Send the response to the client.
+ clientConnection.sendResponse(this);
// Invoke the post-response search plugins.
invokePostResponsePlugins();
diff --git a/opends/src/server/org/opends/server/loggers/TextAccessLogPublisher.java b/opends/src/server/org/opends/server/loggers/TextAccessLogPublisher.java
index 7de3401..f1d095f 100644
--- a/opends/src/server/org/opends/server/loggers/TextAccessLogPublisher.java
+++ b/opends/src/server/org/opends/server/loggers/TextAccessLogPublisher.java
@@ -1418,7 +1418,7 @@
return;
}
- StringBuilder buffer = new StringBuilder(100);
+ StringBuilder buffer = new StringBuilder(192);
appendHeader(searchOperation, "SEARCH", CATEGORY_REQUEST, buffer);
buffer.append(" base=\"");
buffer.append(searchOperation.getRawBaseDN().toString());
@@ -1470,7 +1470,7 @@
return;
}
- StringBuilder buffer = new StringBuilder(100);
+ StringBuilder buffer = new StringBuilder(128);
appendHeader(searchOperation, "SEARCH", CATEGORY_RESPONSE, buffer);
buffer.append(" result=");
buffer.append(searchOperation.getResultCode().getIntValue());
diff --git a/opends/src/server/org/opends/server/protocols/ldap/LDAPConnectionHandler.java b/opends/src/server/org/opends/server/protocols/ldap/LDAPConnectionHandler.java
index 862a01f..18c2c9c 100644
--- a/opends/src/server/org/opends/server/protocols/ldap/LDAPConnectionHandler.java
+++ b/opends/src/server/org/opends/server/protocols/ldap/LDAPConnectionHandler.java
@@ -22,11 +22,10 @@
* CDDL HEADER END
*
*
- * Copyright 2006-2009 Sun Microsystems, Inc.
+ * Copyright 2006-2010 Sun Microsystems, Inc.
*/
package org.opends.server.protocols.ldap;
import static org.opends.messages.ProtocolMessages.*;
-import static org.opends.server.loggers.AccessLogger.*;
import static org.opends.server.loggers.ErrorLogger.*;
import static org.opends.server.loggers.debug.DebugLogger.*;
import static org.opends.server.util.ServerConstants.*;
@@ -1156,7 +1155,6 @@
if (requestHandler
.registerClient(clientConnection)) {
- logConnect(clientConnection);
}
} catch (Exception e) {
if (debugEnabled())
diff --git a/opends/src/server/org/opends/server/protocols/ldap/LDAPRequestHandler.java b/opends/src/server/org/opends/server/protocols/ldap/LDAPRequestHandler.java
index 3a3dc1e..636ab35 100644
--- a/opends/src/server/org/opends/server/protocols/ldap/LDAPRequestHandler.java
+++ b/opends/src/server/org/opends/server/protocols/ldap/LDAPRequestHandler.java
@@ -29,6 +29,7 @@
import static org.opends.messages.ProtocolMessages.*;
+import static org.opends.server.loggers.AccessLogger.logConnect;
import static org.opends.server.loggers.debug.DebugLogger.*;
import static org.opends.server.util.StaticUtils.*;
@@ -265,6 +266,7 @@
SocketChannel socketChannel = c.getSocketChannel();
socketChannel.configureBlocking(false);
socketChannel.register(selector, SelectionKey.OP_READ, c);
+ logConnect(c);
}
catch (Exception e)
{
--
Gitblit v1.10.0