gemmellr commented on code in PR #5303:
URL: https://github.com/apache/activemq-artemis/pull/5303#discussion_r1804621128


##########
artemis-server/src/main/java/org/apache/activemq/artemis/core/server/ActiveMQServerLogger.java:
##########
@@ -1584,8 +1439,6 @@ void 
noQueueIdDefined(org.apache.activemq.artemis.api.core.Message message,
    @LogMessage(id = 224126, value = "Failure during protocol handshake on 
connection to {} from {}", level = LogMessage.Level.ERROR)
    void failureDuringProtocolHandshake(SocketAddress localAddress, 
SocketAddress remoteAddress, Throwable e);
 
-   // notice loggerID=224127 is reserved as it's been used at 
ActiveMQQueueLogger

Review Comment:
   This seems like a notice worth keeping?



##########
artemis-server/src/main/java/org/apache/activemq/artemis/core/server/ActiveMQServerLogger.java:
##########
@@ -35,30 +32,26 @@
 import org.apache.activemq.artemis.core.config.Configuration;
 import org.apache.activemq.artemis.core.io.IOCallback;
 import org.apache.activemq.artemis.core.io.SequentialFile;
-import org.apache.activemq.artemis.core.paging.cursor.PagePosition;
-import org.apache.activemq.artemis.core.paging.cursor.PageSubscription;
-import org.apache.activemq.artemis.core.persistence.OperationContext;
 import org.apache.activemq.artemis.core.protocol.core.Packet;
 import 
org.apache.activemq.artemis.core.protocol.core.impl.wireformat.BackupReplicationStartFailedMessage;
 import org.apache.activemq.artemis.core.remoting.impl.netty.TransportConstants;
-import org.apache.activemq.artemis.core.server.routing.targets.Target;
 import org.apache.activemq.artemis.core.server.cluster.Bridge;
 import org.apache.activemq.artemis.core.server.cluster.impl.BridgeImpl;
 import 
org.apache.activemq.artemis.core.server.cluster.impl.ClusterConnectionImpl;
 import 
org.apache.activemq.artemis.core.server.cluster.quorum.ServerConnectVote;
 import org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl;
 import org.apache.activemq.artemis.core.server.impl.ServerSessionImpl;
 import org.apache.activemq.artemis.core.server.management.Notification;
+import org.apache.activemq.artemis.core.server.routing.targets.Target;
+import org.apache.activemq.artemis.logs.BundleFactory;
 import org.apache.activemq.artemis.logs.annotation.LogBundle;
 import org.apache.activemq.artemis.logs.annotation.LogMessage;
-import org.apache.activemq.artemis.logs.BundleFactory;
 import org.apache.activemq.artemis.spi.core.remoting.Connection;
-import org.w3c.dom.Node;
 
 /**
  * Logger Code 22
  */
-@LogBundle(projectCode = "AMQ", regexID = "22[0-9]{4}")
+@LogBundle(projectCode = "AMQ", regexID = "22[0-9]{4}", retiredIDs = "221026, 
221052, 222012, 222020, 222021, 222022, 222024, 222027, 222028, 222029, 222052, 
222071, 222078, 222079, 222083, 222084, 222088, 222090, 222102, 222128, 222134, 
222135, 222152, 222159, 222163, 222167, 222170, 222171, 222182, 222192, 222193, 
222204, 222252, 222255, 222257, 224001, 224002, 224003, 224005, 224035, 224100, 
224121, 224127, 222260, 222259, 222288")

Review Comment:
   This is getting a bit ugly. I wonder about maybe a static method could be 
named, or annotated separately, to provide the values to separate the detail 
from the basic bundle definition? Could perhaps avoid using a String that way 
also (though maybe even the way it is).



##########
artemis-cli/src/main/java/org/apache/activemq/artemis/integration/bootstrap/ActiveMQBootstrapLogger.java:
##########
@@ -23,23 +23,14 @@
 /**
  * Logger Code 10
  */
-@LogBundle(projectCode = "AMQ", regexID = "10[0-9]{4}")
+@LogBundle(projectCode = "AMQ", regexID = "10[0-9]{4}", retiredIDs = "101001, 
101002, 101003")

Review Comment:
   This list (and other classes similarly) is likely to be incomplete. I recall 
Clebert removed some when we worked on switching things to SLF4J+Log4j. So I 
expect there will be several others in amongst 
9873fccf744c0cb0a25dd905fab67ea52ef7aa7d (or 
[9873fccf744c0cb0a25dd905fab67ea52ef7aa7d.diff](https://github.com/apache/activemq-artemis/commit/9873fccf744c0cb0a25dd905fab67ea52ef7aa7d.diff)
 since it is too large for the UI ) that could be marked retired, either now or 
separately.



##########
artemis-log-annotation-processor/src/main/java/org/apache/activemq/artemis/logs/annotation/LogBundle.java:
##########
@@ -27,7 +27,13 @@
 
    String projectCode();
 
-   /** if set, every code generated must match this regular expression.
-    *  this is useful to validate ranges.*/
+   /* If set, every code generated must match this regular expression.
+    * This is useful to validate ranges.
+    */

Review Comment:
   This seems like it should stay Javadoc? Similar for new one below.



##########
artemis-log-annotation-processor/src/main/java/org/apache/activemq/artemis/logs/annotation/processor/LogAnnotationProcessor.java:
##########
@@ -204,6 +208,17 @@ void validateRegexID(LogBundle bundleAnnotation, long id) {
       }
    }
 
+   void checkRetiredIDs(LogBundle bundleAnnotation, long id) {
+      if (bundleAnnotation.retiredIDs() != null && 
!bundleAnnotation.retiredIDs().isEmpty()) {
+         if (Arrays.stream(bundleAnnotation.retiredIDs().split(","))
+                   .map(String::trim)
+                   .map(Long::valueOf)
+                   .collect(Collectors.toList()).contains(id)) {
+            throw new IllegalArgumentException("Code ID " + id + " has been 
retired. Select a different ID.");
+         }
+      }
+   }

Review Comment:
   Although not performance-critical, repeatedly splitting the retiredIDs 
String, trimming them, creating the Long's, and Collecting them to the same 
ultimate List over-and-over again for every LogMessage/Message annotation seems 
especially inefficient. It could be done once upfront for each LogBundle and 
the result reused?
   
   There are a lot of sequential retired IDs. Someone hitting one seems likely 
to just try the next one, and find the same error, before then having to look 
at the bundle definition and consider the list and find the next non-retired 
and not-in-use one.
   
   This bit of code has the retired IDs, meaning it can easily indicate what 
they are so anyone hitting the failure can immediately see the retired ones 
they cant use. (It could even indicate the next ID that isnt retired and could 
also further look at whether that is already used and suggest the next that 
isnt...but that would be a big change, so just printing the retired ones would 
be an easy help instead hehe).



-- 
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: gitbox-unsubscr...@activemq.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: gitbox-unsubscr...@activemq.apache.org
For additional commands, e-mail: gitbox-h...@activemq.apache.org
For further information, visit: https://activemq.apache.org/contact


Reply via email to