This is an automated email from the ASF dual-hosted git repository.

wusheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking.git


The following commit(s) were added to refs/heads/master by this push:
     new 841a9d3  [agent/plugin] Move FILTER_LENGTH_LIMIT to 
config.plugin.mongodb (#3820)
841a9d3 is described below

commit 841a9d395bada2a9f2d883f7ec7f9ed2c4f1027f
Author: zhang-wei <pk...@outlook.com>
AuthorDate: Sun Nov 10 15:04:00 2019 +0800

    [agent/plugin] Move FILTER_LENGTH_LIMIT to config.plugin.mongodb (#3820)
    
    * move FILTER_LENGTH_LIMIT
    
    * fix checkstyle
---
 .../skywalking/apm/agent/core/conf/Config.java     | 13 +++++++++--
 .../plugin/mongodb/v3/support/MongoConstants.java  |  2 --
 .../mongodb/v3/support/MongoOperationHelper.java   | 27 ++++++++++++++++++----
 docs/en/setup/service-agent/java-agent/README.md   |  1 +
 4 files changed, 35 insertions(+), 8 deletions(-)

diff --git 
a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/conf/Config.java
 
b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/conf/Config.java
index 18280df..376add8 100755
--- 
a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/conf/Config.java
+++ 
b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/conf/Config.java
@@ -19,13 +19,14 @@
 
 package org.apache.skywalking.apm.agent.core.conf;
 
-import java.util.HashMap;
-import java.util.Map;
 import org.apache.skywalking.apm.agent.core.context.trace.TraceSegment;
 import org.apache.skywalking.apm.agent.core.logging.core.LogLevel;
 import org.apache.skywalking.apm.agent.core.logging.core.LogOutput;
 import org.apache.skywalking.apm.agent.core.logging.core.WriterFactory;
 
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * This is the core config in sniffer agent.
  *
@@ -220,6 +221,14 @@ public class Config {
              * include parameters.
              */
             public static boolean TRACE_PARAM = false;
+
+            /**
+             * For the sake of performance, SkyWalking won't save the entire 
parameters string into the tag, but only
+             * the first {@code FILTER_LENGTH_LIMIT} characters.
+             *
+             * Set a negative number to save the complete parameter string to 
the tag.
+             */
+            public static int FILTER_LENGTH_LIMIT = 256;
         }
 
         public static class Elasticsearch {
diff --git 
a/apm-sniffer/apm-sdk-plugin/mongodb-3.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/mongodb/v3/support/MongoConstants.java
 
b/apm-sniffer/apm-sdk-plugin/mongodb-3.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/mongodb/v3/support/MongoConstants.java
index 1619057..6230be9 100644
--- 
a/apm-sniffer/apm-sdk-plugin/mongodb-3.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/mongodb/v3/support/MongoConstants.java
+++ 
b/apm-sniffer/apm-sdk-plugin/mongodb-3.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/mongodb/v3/support/MongoConstants.java
@@ -31,8 +31,6 @@ public class MongoConstants {
 
     public static final String MONGO_DB_OP_PREFIX = "MongoDB/";
 
-    public static final int FILTER_LENGTH_LIMIT = 256;
-
     public static final String EMPTY = "";
 
 }
diff --git 
a/apm-sniffer/apm-sdk-plugin/mongodb-3.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/mongodb/v3/support/MongoOperationHelper.java
 
b/apm-sniffer/apm-sdk-plugin/mongodb-3.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/mongodb/v3/support/MongoOperationHelper.java
index c038cd5..ca1d41e 100644
--- 
a/apm-sniffer/apm-sdk-plugin/mongodb-3.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/mongodb/v3/support/MongoOperationHelper.java
+++ 
b/apm-sniffer/apm-sdk-plugin/mongodb-3.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/mongodb/v3/support/MongoOperationHelper.java
@@ -23,7 +23,24 @@ import com.mongodb.bulk.DeleteRequest;
 import com.mongodb.bulk.InsertRequest;
 import com.mongodb.bulk.UpdateRequest;
 import com.mongodb.bulk.WriteRequest;
-import com.mongodb.operation.*;
+import com.mongodb.operation.CountOperation;
+import com.mongodb.operation.CreateCollectionOperation;
+import com.mongodb.operation.CreateIndexesOperation;
+import com.mongodb.operation.CreateViewOperation;
+import com.mongodb.operation.DeleteOperation;
+import com.mongodb.operation.DistinctOperation;
+import com.mongodb.operation.FindAndDeleteOperation;
+import com.mongodb.operation.FindAndReplaceOperation;
+import com.mongodb.operation.FindAndUpdateOperation;
+import com.mongodb.operation.FindOperation;
+import com.mongodb.operation.GroupOperation;
+import com.mongodb.operation.InsertOperation;
+import com.mongodb.operation.ListCollectionsOperation;
+import com.mongodb.operation.MapReduceToCollectionOperation;
+import com.mongodb.operation.MapReduceWithInlineResultsOperation;
+import com.mongodb.operation.MixedBulkWriteOperation;
+import com.mongodb.operation.UpdateOperation;
+import org.apache.skywalking.apm.agent.core.conf.Config;
 import org.bson.BsonDocument;
 
 import java.util.List;
@@ -111,7 +128,8 @@ public class MongoOperationHelper {
             } else if (request instanceof UpdateRequest) {
                 params.append(((UpdateRequest) 
request).getFilter()).append(",");
             }
-            if (params.length() > MongoConstants.FILTER_LENGTH_LIMIT) {
+            final int filterLengthLimit = 
Config.Plugin.MongoDB.FILTER_LENGTH_LIMIT;
+            if (filterLengthLimit > 0 && params.length() > filterLengthLimit) {
                 params.append("...");
                 break;
             }
@@ -121,8 +139,9 @@ public class MongoOperationHelper {
 
     private static String limitFilter(String filter) {
         final StringBuilder params = new StringBuilder();
-        if (filter.length() > MongoConstants.FILTER_LENGTH_LIMIT) {
-            return params.append(filter, 0, 
MongoConstants.FILTER_LENGTH_LIMIT).append("...").toString();
+        final int filterLengthLimit = 
Config.Plugin.MongoDB.FILTER_LENGTH_LIMIT;
+        if (filterLengthLimit > 0 && filter.length() > filterLengthLimit) {
+            return params.append(filter, 0, 
filterLengthLimit).append("...").toString();
         } else {
             return filter;
         }
diff --git a/docs/en/setup/service-agent/java-agent/README.md 
b/docs/en/setup/service-agent/java-agent/README.md
index 979837a..5db8bc7 100755
--- a/docs/en/setup/service-agent/java-agent/README.md
+++ b/docs/en/setup/service-agent/java-agent/README.md
@@ -97,6 +97,7 @@ property key | Description | Default |
 `dictionary.endpoint_name_buffer_size`|The buffer size of endpoint names and 
peer|`1000 * 10000`|
 `plugin.peer_max_length `|Peer maximum description limit.|`200`|
 `plugin.mongodb.trace_param`|If true, trace all the parameters in MongoDB 
access, default is false. Only trace the operation, not include 
parameters.|`false`|
+`plugin.mongodb.filter_length_limit`|If set to positive number, the 
`WriteRequest.params` would be truncated to this length, otherwise it would be 
completely saved, which may cause performance problem.|`256`|
 `plugin.elasticsearch.trace_dsl`|If true, trace all the DSL(Domain Specific 
Language) in ElasticSearch access, default is false.|`false`|
 `plugin.springmvc.use_qualified_name_as_endpoint_name`|If true, the fully 
qualified method name will be used as the endpoint name instead of the request 
URL, default is false.|`false`|
 `plugin.toolit.use_qualified_name_as_operation_name`|If true, the fully 
qualified method name will be used as the operation name instead of the given 
operation name, default is false.|`false`|

Reply via email to