You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by mr...@apache.org on 2019/09/04 14:42:54 UTC
svn commit: r1866393 - in /jackrabbit/oak/trunk/oak-store-document/src:
main/java/org/apache/jackrabbit/oak/plugins/document/
main/java/org/apache/jackrabbit/oak/plugins/document/util/
test/java/org/apache/jackrabbit/oak/plugins/document/util/
Author: mreutegg
Date: Wed Sep 4 14:42:54 2019
New Revision: 1866393
URL: http://svn.apache.org/viewvc?rev=1866393&view=rev
Log:
OAK-4508: LoggingDocumentStore: better support for multiple instances
Patch provided by José Cordero
Modified:
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreBuilder.java
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/LoggingDocumentStoreWrapper.java
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/util/LoggingDocumentStoreWrapperTest.java
Modified: jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java?rev=1866393&r1=1866392&r2=1866393&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java (original)
+++ jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java Wed Sep 4 14:42:54 2019
@@ -537,7 +537,11 @@ public final class DocumentNodeStore
s = new TimingDocumentStoreWrapper(s);
}
if (builder.getLogging()) {
- s = new LoggingDocumentStoreWrapper(s);
+ if (builder.getLoggingPrefix() != null) {
+ s = new LoggingDocumentStoreWrapper(s, builder.getLoggingPrefix());
+ } else {
+ s = new LoggingDocumentStoreWrapper(s);
+ }
}
if (builder.getReadOnlyMode()) {
s = ReadOnlyDocumentStoreWrapperFactory.getInstance(s);
Modified: jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreBuilder.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreBuilder.java?rev=1866393&r1=1866392&r2=1866393&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreBuilder.java (original)
+++ jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreBuilder.java Wed Sep 4 14:42:54 2019
@@ -115,6 +115,7 @@ public class DocumentNodeStoreBuilder<T
private int asyncDelay = 1000;
private boolean timing;
private boolean logging;
+ private String loggingPrefix;
private LeaseCheckMode leaseCheck = ClusterNodeInfo.DEFAULT_LEASE_CHECK_MODE; // OAK-2739 is enabled by default also for non-osgi
private boolean isReadOnlyMode = false;
private Weigher<CacheValue, CacheValue> weigher = new EmpiricalWeigher();
@@ -212,6 +213,22 @@ public class DocumentNodeStoreBuilder<T
}
/**
+ * Sets a custom prefix for the logger.
+ *
+ * @param prefix to be used in the logs output.
+ * @return this
+ */
+ public T setLoggingPrefix(String prefix) {
+ this.loggingPrefix = prefix;
+ return thisBuilder();
+ }
+
+ @Nullable
+ String getLoggingPrefix() {
+ return loggingPrefix;
+ }
+
+ /**
* If {@code true}, sets lease check mode to {@link LeaseCheckMode#LENIENT},
* otherwise sets the mode to {@link LeaseCheckMode#DISABLED}. This method
* is only kept for backward compatibility with the behaviour before
Modified: jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/LoggingDocumentStoreWrapper.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/LoggingDocumentStoreWrapper.java?rev=1866393&r1=1866392&r2=1866393&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/LoggingDocumentStoreWrapper.java (original)
+++ jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/LoggingDocumentStoreWrapper.java Wed Sep 4 14:42:54 2019
@@ -41,6 +41,8 @@ public class LoggingDocumentStoreWrapper
private static final boolean DEBUG = Boolean.parseBoolean(System.getProperty("ds.debug", "true"));
+ private String logPrefix = "ds";
+
final DocumentStore store;
private boolean logThread;
@@ -48,11 +50,21 @@ public class LoggingDocumentStoreWrapper
this.store = store;
}
+ public LoggingDocumentStoreWrapper(DocumentStore store, String prefix) {
+ this.store = store;
+ this.logPrefix = prefix;
+ }
+
public LoggingDocumentStoreWrapper withThreadNameLogging() {
this.logThread = true;
return this;
}
+ public LoggingDocumentStoreWrapper withPrefix(String prefix) {
+ this.logPrefix = prefix;
+ return this;
+ }
+
@Override
public <T extends Document> T find(final Collection<T> collection,
final String key) {
@@ -366,7 +378,7 @@ public class LoggingDocumentStoreWrapper
}
private void logMethod(String methodName, Object... args) {
- StringBuilder buff = new StringBuilder("ds");
+ StringBuilder buff = new StringBuilder(logPrefix);
buff.append('.').append(methodName).append('(');
for (int i = 0; i < args.length; i++) {
if (i > 0) {
Modified: jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/util/LoggingDocumentStoreWrapperTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/util/LoggingDocumentStoreWrapperTest.java?rev=1866393&r1=1866392&r2=1866393&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/util/LoggingDocumentStoreWrapperTest.java (original)
+++ jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/util/LoggingDocumentStoreWrapperTest.java Wed Sep 4 14:42:54 2019
@@ -16,9 +16,16 @@
*/
package org.apache.jackrabbit.oak.plugins.document.util;
+import static org.apache.jackrabbit.oak.plugins.document.TestUtils.merge;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
import org.apache.jackrabbit.oak.commons.junit.LogCustomizer;
+import org.apache.jackrabbit.oak.plugins.document.Collection;
import org.apache.jackrabbit.oak.plugins.document.DocumentMKBuilderProvider;
import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore;
+import org.apache.jackrabbit.oak.plugins.document.DocumentStore;
+import org.apache.jackrabbit.oak.plugins.document.memory.MemoryDocumentStore;
import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
import org.junit.After;
import org.junit.Rule;
@@ -26,6 +33,7 @@ import org.junit.Test;
import static org.apache.jackrabbit.oak.plugins.document.TestUtils.merge;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
public class LoggingDocumentStoreWrapperTest {
@@ -48,4 +56,40 @@ public class LoggingDocumentStoreWrapper
merge(ns, builder);
assertFalse(customizer.getLogs().isEmpty());
}
+
+ @Test
+ public void loggingWithPrefix() throws Exception {
+ String logPrefix = "testPrefix";
+ customizer.starting();
+ DocumentNodeStore ns = builderProvider.newBuilder().setLogging(true).setLoggingPrefix(logPrefix).build();
+ NodeBuilder builder = ns.getRoot().builder();
+ builder.child("foo");
+ merge(ns, builder);
+ assertFalse(customizer.getLogs().isEmpty());
+ int prefixCount = 0;
+ // Check there are log lines starting with the prefix
+ for (String log : customizer.getLogs()) {
+ if (log.startsWith(logPrefix)) {
+ prefixCount++;
+ }
+ }
+ assertTrue(prefixCount > 0);
+ }
+
+ @Test
+ public void loggingWithPrefix2() {
+ String logPrefix = "testPrefix";
+ customizer.starting();
+ DocumentStore store = new LoggingDocumentStoreWrapper(new MemoryDocumentStore()).withPrefix(logPrefix);
+ store.find(Collection.NODES, "some-id");
+ assertFalse(customizer.getLogs().isEmpty());
+ int prefixCount = 0;
+ // Check there are log lines starting with the prefix
+ for (String log : customizer.getLogs()) {
+ if (log.startsWith(logPrefix)) {
+ prefixCount++;
+ }
+ }
+ assertTrue(prefixCount > 0);
+ }
}