keith-turner commented on code in PR #3124:
URL: https://github.com/apache/accumulo/pull/3124#discussion_r1061106534


##########
core/src/main/java/org/apache/accumulo/core/spi/scan/ScanServerSelector.java:
##########
@@ -105,6 +105,12 @@ interface SelectorParameters {
      *         were set, an empty map is returned.
      */
     Map<String,String> getHints();
+
+    /**
+     * @return user data set by a scanner using {@link 
ScannerBase#setUserData(String)}
+     */

Review Comment:
   ```suggestion
        * @return user data set by a scanner using {@link 
ScannerBase#setUserData(String)}
        *
        * @since 3.0.0
        */
   ```



##########
core/src/main/java/org/apache/accumulo/core/client/ScannerBase.java:
##########
@@ -390,4 +390,21 @@ default Stream<Entry<Key,Value>> stream() {
     return StreamSupport.stream(this.spliterator(), false);
   }
 
+  /**
+   * Set user data on the Scanner. This data will be added to server side 
information and logs for
+   * correlation.
+   *
+   * @param userData meaningful data that can be used to correlate server side 
information
+   * @since 3.0.0
+   */
+  void setUserData(String userData);

Review Comment:
   I like `setCorrelationId(String correlationId)`.  Maybe `scan` is not needed 
in the name since its being set on a scanner.  



##########
core/src/main/java/org/apache/accumulo/core/logging/ScanUserDataLogger.java:
##########
@@ -0,0 +1,169 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.accumulo.core.logging;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Marker;
+import org.slf4j.event.Level;
+import org.slf4j.helpers.AbstractLogger;
+import org.slf4j.spi.LoggingEventBuilder;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
+public class ScanUserDataLogger extends AbstractLogger {

Review Comment:
   > I just want to prefix any msg with the userData. I don't see how creating 
a new method for each and every msg I want to log makes sense.
   
   I think what @ctubbsii  suggested could accomplish your goal, but would be 
out of scope for this PR.  It would need to be its own PR, a PR to gather all 
logging related to the lifecycle (client and server)  of scans into one place 
in the code.  The static methods are not the goal in TabletLogger.java, but one 
way of achieving some goals.  That code has the following two goals.
   
    * Use logical names for logging related to functionality instead of class 
names.  For example could use `org.apache.accumulo.scan` for all scan related 
logging, even if that functionality exist across many classes. Then a user 
could set org.apache.accumulo.scan to TRACE and redirect it to its own file to 
gather very detailed trace logging related to scans without overwhelming the 
general debug logs.
    * Gather all the code related to logging for specific functionality that 
user may interested in to one place in the code.  Then a user who wants to 
parse and search log messages can look at this one package in Accumulo and see 
what log messages are available to parse.



##########
core/src/main/java/org/apache/accumulo/core/spi/scan/ScanInfo.java:
##########
@@ -125,4 +125,11 @@ enum Type {
    * @return Hints set by a scanner using {@link 
ScannerBase#setExecutionHints(Map)}
    */
   Map<String,String> getExecutionHints();
+
+  /**
+   * @return user data set by a scanner using {@link 
ScannerBase#setUserData(String)}
+   */

Review Comment:
   ```suggestion
      * @return user data set by a scanner using {@link 
ScannerBase#setUserData(String)}
      * 
      * @since 3.0.0
      */
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to