Skip to content

Commit 1f0bce0

Browse files
committed
Use supplier so message isn't calculated when disabled dumper
1 parent 4247274 commit 1f0bce0

File tree

4 files changed

+15
-10
lines changed

4 files changed

+15
-10
lines changed

Diff for: ethereum/statetransition/src/main/java/tech/pegasys/teku/statetransition/util/DebugDataDumper.java

+8-4
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import java.text.DateFormat;
2323
import java.text.SimpleDateFormat;
2424
import java.util.Optional;
25+
import java.util.function.Supplier;
2526
import org.apache.logging.log4j.LogManager;
2627
import org.apache.logging.log4j.Logger;
2728
import org.apache.tuweni.bytes.Bytes;
@@ -60,7 +61,7 @@ public DebugDataDumper(final Path directory) {
6061
public void saveGossipMessageDecodingError(
6162
final String topic,
6263
final Optional<UInt64> arrivalTimestamp,
63-
final Bytes originalMessage,
64+
final Supplier<Bytes> originalMessage,
6465
final Throwable error) {
6566
if (!enabled) {
6667
return;
@@ -73,7 +74,9 @@ public void saveGossipMessageDecodingError(
7374
.resolve(topic.replaceAll("/", "_"));
7475
final boolean success =
7576
saveBytesToFile(
76-
"gossip message with decoding error", topicPath.resolve(fileName), originalMessage);
77+
"gossip message with decoding error",
78+
topicPath.resolve(fileName),
79+
originalMessage.get());
7780
if (success) {
7881
LOG.warn("Failed to decode gossip message on topic {}", topic, error);
7982
}
@@ -82,7 +85,7 @@ public void saveGossipMessageDecodingError(
8285
public void saveGossipRejectedMessageToFile(
8386
final String topic,
8487
final Optional<UInt64> arrivalTimestamp,
85-
final Bytes decodedMessage,
88+
final Supplier<Bytes> decodedMessage,
8689
final Optional<String> reason) {
8790
if (!enabled) {
8891
return;
@@ -92,7 +95,8 @@ public void saveGossipRejectedMessageToFile(
9295
final Path topicPath =
9396
Path.of(GOSSIP_MESSAGES_DIR).resolve(REJECTED_SUB_DIR).resolve(topic.replaceAll("/", "_"));
9497
final boolean success =
95-
saveBytesToFile("rejected gossip message", topicPath.resolve(fileName), decodedMessage);
98+
saveBytesToFile(
99+
"rejected gossip message", topicPath.resolve(fileName), decodedMessage.get());
96100
if (success) {
97101
LOG.warn(
98102
"Rejecting gossip message on topic {}, reason: {}",

Diff for: ethereum/statetransition/src/main/java/tech/pegasys/teku/statetransition/util/noop/NoOpDebugDataDumper.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
import java.nio.file.Path;
1717
import java.util.Optional;
18+
import java.util.function.Supplier;
1819
import org.apache.tuweni.bytes.Bytes;
1920
import tech.pegasys.teku.infrastructure.unsigned.UInt64;
2021
import tech.pegasys.teku.spec.datastructures.blocks.SignedBeaconBlock;
@@ -30,14 +31,14 @@ public NoOpDebugDataDumper() {
3031
public void saveGossipMessageDecodingError(
3132
final String topic,
3233
final Optional<UInt64> arrivalTimestamp,
33-
final Bytes originalMessage,
34+
final Supplier<Bytes> originalMessage,
3435
final Throwable error) {}
3536

3637
@Override
3738
public void saveGossipRejectedMessageToFile(
3839
final String topic,
3940
final Optional<UInt64> arrivalTimestamp,
40-
final Bytes decodedMessage,
41+
final Supplier<Bytes> decodedMessage,
4142
final Optional<String> reason) {}
4243

4344
@Override

Diff for: ethereum/statetransition/src/test/java/tech/pegasys/teku/statetransition/util/DebugDataDumperTest.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ void saveGossipMessageDecodingError_shouldSaveToFile(@TempDir Path tempDir) {
4747
final Bytes messageBytes = dataStructureUtil.stateBuilderPhase0().build().sszSerialize();
4848
final Optional<UInt64> arrivalTimestamp = Optional.of(timeProvider.getTimeInMillis());
4949
manager.saveGossipMessageDecodingError(
50-
"/eth/test/topic", arrivalTimestamp, messageBytes, new Throwable());
50+
"/eth/test/topic", arrivalTimestamp, () -> messageBytes, new Throwable());
5151

5252
final String fileName =
5353
String.format("%s.ssz", formatTimestamp(timeProvider.getTimeInMillis().longValue()));
@@ -66,7 +66,7 @@ void saveGossipRejectedMessageToFile_shouldSaveToFile(@TempDir Path tempDir) {
6666
final Bytes messageBytes = dataStructureUtil.stateBuilderPhase0().build().sszSerialize();
6767
final Optional<UInt64> arrivalTimestamp = Optional.of(timeProvider.getTimeInMillis());
6868
manager.saveGossipRejectedMessageToFile(
69-
"/eth/test/topic", arrivalTimestamp, messageBytes, Optional.of("reason"));
69+
"/eth/test/topic", arrivalTimestamp, () -> messageBytes, Optional.of("reason"));
7070

7171
final String fileName =
7272
String.format("%s.ssz", formatTimestamp(timeProvider.getTimeInMillis().longValue()));

Diff for: networking/eth2/src/main/java/tech/pegasys/teku/networking/eth2/gossip/topics/topichandlers/Eth2TopicHandler.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ private void processMessage(
138138
debugDataDumper.saveGossipRejectedMessageToFile(
139139
getTopic(),
140140
message.getArrivalTimestamp(),
141-
message.getDecodedMessage().getDecodedMessage().orElse(Bytes.EMPTY),
141+
() -> message.getDecodedMessage().getDecodedMessage().orElse(Bytes.EMPTY),
142142
internalValidationResult.getDescription());
143143
P2P_LOG.onGossipRejected(
144144
getTopic(),
@@ -173,7 +173,7 @@ protected ValidationResult handleMessageProcessingError(
173173
if (ExceptionUtil.hasCause(err, DecodingException.class)) {
174174

175175
debugDataDumper.saveGossipMessageDecodingError(
176-
getTopic(), message.getArrivalTimestamp(), message.getOriginalMessage(), err);
176+
getTopic(), message.getArrivalTimestamp(), message::getOriginalMessage, err);
177177
P2P_LOG.onGossipMessageDecodingError(getTopic(), message.getOriginalMessage(), err);
178178
response = ValidationResult.Invalid;
179179
} else if (ExceptionUtil.hasCause(err, RejectedExecutionException.class)) {

0 commit comments

Comments
 (0)