nlu90 commented on code in PR #15728:
URL: https://github.com/apache/pulsar/pull/15728#discussion_r879953842
##########
pulsar-functions/instance/src/main/java/org/apache/pulsar/functions/instance/LogAppender.java:
##########
@@ -47,15 +54,16 @@ public LogAppender(PulsarClient pulsarClient, String
logTopic, String fqn, Strin
this.logTopic = logTopic;
this.fqn = fqn;
this.instance = instance;
+ this.errorHandler = new DefaultErrorHandler(this);
Review Comment:
I first tried to implement our own `LogErrorHandler` which also sends error
messages and throwables to the pulsar cluster using appender's producer.
But since the producer also logs debug or error message during execution, I
met an recursive call issue as follows:
```
2022-05-23 15:45:55,433 public/default/LoggingFunction-0 WARN
org.apache.logging.slf4j.Log4jLogger caught java.lang.StackOverflowError
logging ParameterizedMessage: [{}] [{}] add message to batch, num messages in
batch so far {} java.lang.StackOverflowError
at
org.apache.pulsar.client.impl.ProducerImpl.sendAsync(ProducerImpl.java:565)
at
org.apache.pulsar.client.impl.ProducerImpl.internalSendAsync(ProducerImpl.java:340)
at
org.apache.pulsar.client.impl.TypedMessageBuilderImpl.sendAsync(TypedMessageBuilderImpl.java:101)
at
org.apache.pulsar.functions.instance.LogAppender$LogErrorHandler.error(LogAppender.java:156)
at
org.apache.logging.log4j.core.config.AppenderControl.appenderErrorHandlerMessage(AppenderControl.java:118)
at
org.apache.logging.log4j.core.config.AppenderControl.isRecursiveCall(AppenderControl.java:110)
at
org.apache.logging.log4j.core.config.AppenderControl.shouldSkip(AppenderControl.java:93)
at
org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:86)
at
org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:542)
at
org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:500)
at
org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:483)
at
org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:417)
at
org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:82)
at org.apache.logging.log4j.core.Logger.log(Logger.java:161)
at
org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(AbstractLogger.java:2205)
at
org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(AbstractLogger.java:2159)
at
org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2142)
at
org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:2028)
at
org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:1891)
at org.apache.logging.slf4j.Log4jLogger.debug(Log4jLogger.java:134)
at
org.apache.pulsar.client.impl.BatchMessageContainerImpl.add(BatchMessageContainerImpl.java:76)
at
org.apache.pulsar.client.impl.ProducerImpl.serializeAndSendMessage(ProducerImpl.java:641)
at
org.apache.pulsar.client.impl.ProducerImpl.sendAsync(ProducerImpl.java:555)
at
org.apache.pulsar.client.impl.ProducerImpl.internalSendAsync(ProducerImpl.java:340)
at
org.apache.pulsar.client.impl.TypedMessageBuilderImpl.sendAsync(TypedMessageBuilderImpl.java:101)
at
org.apache.pulsar.functions.instance.LogAppender$LogErrorHandler.error(LogAppender.java:156)
at
org.apache.logging.log4j.core.config.AppenderControl.appenderErrorHandlerMessage(AppenderControl.java:118)
at
org.apache.logging.log4j.core.config.AppenderControl.isRecursiveCall(AppenderControl.java:110)
at
org.apache.logging.log4j.core.config.AppenderControl.shouldSkip(AppenderControl.java:93)
at
org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:86)
at
org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:542)
at
org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:500)
at
org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:483)
at
org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:417)
at
org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:82)
at org.apache.logging.log4j.core.Logger.log(Logger.java:161)
```
--
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]