Skip to content

Commit ea32b8b

Browse files
authored
Avoid Pattern recompilation in log output processing (#6239)
1 parent f5ec43d commit ea32b8b

File tree

2 files changed

+5
-3
lines changed

2 files changed

+5
-3
lines changed

core/src/main/java/org/testcontainers/containers/output/FrameConsumerResultCallback.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,9 @@ public class FrameConsumerResultCallback extends ResultCallbackTemplate<FrameCon
3030

3131
private static final String LINE_BREAK_REGEX = "((\\r?\\n)|(\\r))";
3232

33-
static final String LINE_BREAK_AT_END_REGEX = LINE_BREAK_REGEX + "$";
33+
private static final Pattern LINE_BREAK_PATTERN = Pattern.compile(LINE_BREAK_REGEX);
34+
35+
static final Pattern LINE_BREAK_AT_END_PATTERN = Pattern.compile(LINE_BREAK_REGEX + "$");
3436

3537
private Map<OutputFrame.OutputType, Consumer<OutputFrame>> consumers;
3638

@@ -139,7 +141,7 @@ private synchronized void processOtherFrame(OutputFrame outputFrame, Consumer<Ou
139141

140142
private void normalizeLogLines(String utf8String, Consumer<OutputFrame> consumer) {
141143
// Reformat strings to normalize new lines.
142-
List<String> lines = new ArrayList<>(Arrays.asList(utf8String.split(LINE_BREAK_REGEX)));
144+
List<String> lines = new ArrayList<>(Arrays.asList(LINE_BREAK_PATTERN.split(utf8String)));
143145
if (lines.isEmpty()) {
144146
consumer.accept(new OutputFrame(OutputFrame.OutputType.STDOUT, EMPTY_LINE));
145147
return;

core/src/main/java/org/testcontainers/containers/output/Slf4jLogConsumer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public void accept(OutputFrame outputFrame) {
5353
OutputFrame.OutputType outputType = outputFrame.getType();
5454

5555
String utf8String = outputFrame.getUtf8String();
56-
utf8String = utf8String.replaceAll(FrameConsumerResultCallback.LINE_BREAK_AT_END_REGEX, "");
56+
utf8String = FrameConsumerResultCallback.LINE_BREAK_AT_END_PATTERN.matcher(utf8String).replaceAll("");
5757

5858
Map<String, String> originalMdc = MDC.getCopyOfContextMap();
5959
MDC.setContextMap(mdc);

0 commit comments

Comments
 (0)