Skip to content

Commit 7f85a9a

Browse files
committed
GEODE-10231 : Add configuration for suppressing FunctionException logging
Use Log4j Markers for FunctionException logs
1 parent f7eb735 commit 7f85a9a

File tree

9 files changed

+65
-10
lines changed

9 files changed

+65
-10
lines changed

geode-core/src/main/java/org/apache/geode/internal/cache/execute/AbstractExecution.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,12 @@
2222
import java.util.concurrent.TimeUnit;
2323

2424
import org.apache.logging.log4j.Logger;
25+
import org.apache.logging.log4j.Marker;
26+
import org.apache.logging.log4j.MarkerManager;
2527

2628
import org.apache.geode.InternalGemFireException;
2729
import org.apache.geode.SystemFailure;
30+
import org.apache.geode.annotations.Immutable;
2831
import org.apache.geode.annotations.internal.MakeNotStatic;
2932
import org.apache.geode.cache.LowMemoryException;
3033
import org.apache.geode.cache.TransactionException;
@@ -55,6 +58,9 @@
5558
*/
5659
public abstract class AbstractExecution implements InternalExecution {
5760
private static final Logger logger = LogService.getLogger();
61+
@Immutable
62+
private static final Marker functionExceptionMarker =
63+
MarkerManager.getMarker("FUNCTION_EXCEPTION_MARKER");
5864

5965
public static final int DEFAULT_CLIENT_FUNCTION_TIMEOUT = 0;
6066
private static final String CLIENT_FUNCTION_TIMEOUT_SYSTEM_PROPERTY =
@@ -504,7 +510,8 @@ private void handleException(Throwable functionException, final Function fn,
504510
((InternalResultSender) sender).setException(functionException);
505511
}
506512
} else {
507-
logger.warn("Exception occurred on local node while executing Function:",
513+
logger.warn(functionException instanceof FunctionException ? functionExceptionMarker : null,
514+
"Exception occurred on local node while executing Function:",
508515
functionException);
509516
}
510517
}

geode-core/src/main/java/org/apache/geode/internal/cache/execute/DistributedRegionFunctionResultSender.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,10 @@
1515
package org.apache.geode.internal.cache.execute;
1616

1717
import org.apache.logging.log4j.Logger;
18+
import org.apache.logging.log4j.Marker;
19+
import org.apache.logging.log4j.MarkerManager;
1820

21+
import org.apache.geode.annotations.Immutable;
1922
import org.apache.geode.cache.execute.Function;
2023
import org.apache.geode.cache.execute.FunctionException;
2124
import org.apache.geode.cache.execute.ResultCollector;
@@ -29,6 +32,9 @@
2932
public class DistributedRegionFunctionResultSender implements InternalResultSender {
3033

3134
private static final Logger logger = LogService.getLogger();
35+
@Immutable
36+
private static final Marker functionExceptionMarker =
37+
MarkerManager.getMarker("FUNCTION_EXCEPTION_MARKER");
3238

3339
DistributedRegionFunctionStreamingMessage msg = null;
3440

@@ -224,7 +230,8 @@ public void setException(Throwable exception) {
224230
} else {
225231
((LocalResultCollector) rc).setException(exception);
226232
// this.lastResult(exception);
227-
logger.info("Unexpected exception during function execution on local node Distributed Region",
233+
logger.info(exception instanceof FunctionException ? functionExceptionMarker : null,
234+
"Unexpected exception during function execution on local node Distributed Region",
228235
exception);
229236
}
230237
rc.endResults();

geode-core/src/main/java/org/apache/geode/internal/cache/execute/MemberFunctionResultSender.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,10 @@
1616
package org.apache.geode.internal.cache.execute;
1717

1818
import org.apache.logging.log4j.Logger;
19+
import org.apache.logging.log4j.Marker;
20+
import org.apache.logging.log4j.MarkerManager;
1921

22+
import org.apache.geode.annotations.Immutable;
2023
import org.apache.geode.cache.execute.Function;
2124
import org.apache.geode.cache.execute.FunctionException;
2225
import org.apache.geode.cache.execute.ResultCollector;
@@ -31,6 +34,9 @@
3134
public class MemberFunctionResultSender implements InternalResultSender {
3235

3336
private static final Logger logger = LogService.getLogger();
37+
@Immutable
38+
private static final Marker functionExceptionMarker =
39+
MarkerManager.getMarker("FUNCTION_EXCEPTION_MARKER");
3440

3541
MemberFunctionStreamingMessage msg = null;
3642

@@ -232,7 +238,8 @@ public void sendException(Throwable exception) {
232238
public void setException(Throwable exception) {
233239
((LocalResultCollector) rc).setException(exception);
234240
// this.lastResult(exception);
235-
logger.info("Unexpected exception during function execution local member",
241+
logger.info(exception instanceof FunctionException ? functionExceptionMarker : null,
242+
"Unexpected exception during function execution local member",
236243
exception);
237244
rc.endResults();
238245
localLastResultReceived = true;

geode-core/src/main/java/org/apache/geode/internal/cache/execute/PartitionedRegionFunctionResultSender.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,10 @@
1717

1818

1919
import org.apache.logging.log4j.Logger;
20+
import org.apache.logging.log4j.Marker;
21+
import org.apache.logging.log4j.MarkerManager;
2022

23+
import org.apache.geode.annotations.Immutable;
2124
import org.apache.geode.cache.execute.Function;
2225
import org.apache.geode.cache.execute.FunctionException;
2326
import org.apache.geode.cache.execute.ResultCollector;
@@ -42,6 +45,9 @@
4245
public class PartitionedRegionFunctionResultSender implements InternalResultSender {
4346

4447
private static final Logger logger = LogService.getLogger();
48+
@Immutable
49+
private static final Marker functionExceptionMarker =
50+
MarkerManager.getMarker("FUNCTION_EXCEPTION_MARKER");
4551

4652
PartitionedRegionFunctionStreamingMessage msg = null;
4753

@@ -390,7 +396,8 @@ public void setException(Throwable exception) {
390396
serverSender.setException(exception);
391397
} else {
392398
((LocalResultCollector) rc).setException(exception);
393-
logger.info("Unexpected exception during function execution on local node Partitioned Region",
399+
logger.info(exception instanceof FunctionException ? functionExceptionMarker : null,
400+
"Unexpected exception during function execution on local node Partitioned Region",
394401
exception);
395402
}
396403
rc.endResults();

geode-core/src/main/java/org/apache/geode/internal/cache/execute/ServerToClientFunctionResultSender.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,10 @@
2020
import java.util.concurrent.atomic.AtomicBoolean;
2121

2222
import org.apache.logging.log4j.Logger;
23+
import org.apache.logging.log4j.Marker;
24+
import org.apache.logging.log4j.MarkerManager;
2325

26+
import org.apache.geode.annotations.Immutable;
2427
import org.apache.geode.cache.execute.Function;
2528
import org.apache.geode.cache.execute.FunctionException;
2629
import org.apache.geode.cache.execute.ResultSender;
@@ -37,6 +40,9 @@
3740

3841
public class ServerToClientFunctionResultSender implements ResultSender {
3942
private static final Logger logger = LogService.getLogger();
43+
@Immutable
44+
private static final Marker functionExceptionMarker =
45+
MarkerManager.getMarker("FUNCTION_EXCEPTION_MARKER");
4046

4147
protected ChunkedMessage msg = null;
4248

@@ -321,9 +327,9 @@ public synchronized void setException(Throwable exception) {
321327
}
322328
String exceptionMessage = exception.getMessage() != null ? exception.getMessage()
323329
: "Exception occurred during function execution";
324-
logger.warn(String.format("Exception on server while executing function : %s",
325-
fn),
326-
exception);
330+
logger.warn(exception instanceof FunctionException ? functionExceptionMarker : null,
331+
"Exception on server while executing function : {}", fn, exception);
332+
327333
if (logger.isDebugEnabled()) {
328334
logger.debug("ServerToClientFunctionResultSender sending Function Exception : ");
329335
}

geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/BaseCommand.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@
3434
import java.util.regex.Pattern;
3535

3636
import org.apache.logging.log4j.Logger;
37+
import org.apache.logging.log4j.Marker;
38+
import org.apache.logging.log4j.MarkerManager;
3739
import org.jetbrains.annotations.NotNull;
3840
import org.jetbrains.annotations.Nullable;
3941

@@ -88,6 +90,9 @@
8890

8991
public abstract class BaseCommand implements Command {
9092
protected static final Logger logger = LogService.getLogger();
93+
@Immutable
94+
protected static final Marker functionExceptionMarker =
95+
MarkerManager.getMarker("FUNCTION_EXCEPTION_MARKER");
9196

9297
@Immutable
9398
private static final byte[] OK_BYTES = new byte[] {0};

geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/command/ExecuteFunction70.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -431,6 +431,10 @@ private void executeFunctionLocally(final Function fn, final FunctionContext cx,
431431
if (logger.isDebugEnabled()) {
432432
logger.debug("Exception on server while executing function: {}", fn, e);
433433
}
434+
} catch (FunctionException e) {
435+
stats.endFunctionExecutionWithException(startExecution, fn.hasResult());
436+
logger.warn(functionExceptionMarker, "Exception on server while executing function: {}",
437+
fn, e);
434438
} catch (Exception e) {
435439
stats.endFunctionExecutionWithException(startExecution, fn.hasResult());
436440
logger.warn("Exception on server while executing function: {}", fn, e);

geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/command/ExecuteRegionFunction66.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -220,9 +220,9 @@ public void cmdExecute(final @NotNull Message clientMessage,
220220
resultSender.setException(fe);
221221
} else {
222222
if (setLastResultReceived(resultSender)) {
223-
logger.warn(String.format("Exception on server while executing function : %s",
224-
function),
225-
fe);
223+
logger.warn(functionExceptionMarker,
224+
"Exception on server while executing function : {}",
225+
function, fe);
226226
sendException(hasResult, clientMessage, message, serverConnection, fe);
227227
}
228228
}

geode-gfsh/src/main/java/org/apache/geode/management/internal/cli/functions/UserFunctionExecution.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,17 @@
2828
import java.util.stream.Collectors;
2929

3030
import org.apache.logging.log4j.Logger;
31+
import org.apache.logging.log4j.Marker;
32+
import org.apache.logging.log4j.MarkerManager;
3133
import org.apache.shiro.subject.Subject;
3234

35+
import org.apache.geode.annotations.Immutable;
3336
import org.apache.geode.cache.Cache;
3437
import org.apache.geode.cache.Region;
3538
import org.apache.geode.cache.execute.Execution;
3639
import org.apache.geode.cache.execute.Function;
3740
import org.apache.geode.cache.execute.FunctionContext;
41+
import org.apache.geode.cache.execute.FunctionException;
3842
import org.apache.geode.cache.execute.FunctionService;
3943
import org.apache.geode.cache.execute.ResultCollector;
4044
import org.apache.geode.cache.query.RegionNotFoundException;
@@ -55,6 +59,10 @@
5559
public class UserFunctionExecution implements InternalFunction<Object[]> {
5660
private static final long serialVersionUID = 1L;
5761
private static final Logger logger = LogService.getLogger();
62+
@Immutable
63+
private static final Marker functionExceptionMarker =
64+
MarkerManager.getMarker("FUNCTION_EXCEPTION_MARKER");
65+
5866
protected static final String ID =
5967
"org.apache.geode.management.internal.cli.functions.UserFunctionExecution";
6068

@@ -244,6 +252,10 @@ public void execute(FunctionContext<Object[]> context) {
244252
CliStrings.format(
245253
CliStrings.EXECUTE_FUNCTION__MSG__RESULT_COLLECTOR_0_NOT_FOUND_ERROR_1,
246254
resultCollectorName, e.getMessage())));
255+
} catch (FunctionException e) {
256+
logger.error(functionExceptionMarker, "error executing function {}", functionId, e);
257+
context.getResultSender().lastResult(
258+
new CliFunctionResult(context.getMemberName(), ERROR, "Exception: " + e.getMessage()));
247259
} catch (Exception e) {
248260
logger.error("error executing function " + functionId, e);
249261
context.getResultSender().lastResult(

0 commit comments

Comments
 (0)