Skip to content

Commit 9efac61

Browse files
poorbarcodelhotari
authored andcommitted
[improve][log] Print ZK path if write to ZK fails due to data being too large to persist (#23652)
(cherry picked from commit 5a3a1f1)
1 parent e5e5033 commit 9efac61

File tree

3 files changed

+12
-4
lines changed

3 files changed

+12
-4
lines changed

managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedCursorImpl.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2247,6 +2247,8 @@ public void operationFailed(ManagedLedgerException exception) {
22472247

22482248
if (State.NoLedger.equals(STATE_UPDATER.get(this))) {
22492249
if (ledger.isNoMessagesAfterPos(mdEntry.newPosition)) {
2250+
log.error("[{}][{}] Metadata ledger creation failed, try to persist the position in the metadata"
2251+
+ " store.", ledger.getName(), name);
22502252
persistPositionToMetaStore(mdEntry, cb);
22512253
} else {
22522254
cb.operationFailed(new ManagedLedgerException("Switch new cursor ledger failed"));
@@ -2969,9 +2971,7 @@ public void operationComplete() {
29692971

29702972
@Override
29712973
public void operationFailed(ManagedLedgerException exception) {
2972-
log.error("[{}][{}] Metadata ledger creation failed {}, try to persist the position in the metadata"
2973-
+ " store.", ledger.getName(), name, exception);
2974-
2974+
log.error("[{}][{}] Metadata ledger creation failed {}", ledger.getName(), name, exception);
29752975
synchronized (pendingMarkDeleteOps) {
29762976
// At this point we don't have a ledger ready
29772977
STATE_UPDATER.set(ManagedCursorImpl.this, State.NoLedger);

pulsar-metadata/src/main/java/org/apache/pulsar/metadata/impl/ZKMetadataStore.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import lombok.SneakyThrows;
3333
import lombok.extern.slf4j.Slf4j;
3434
import org.apache.bookkeeper.zookeeper.BoundExponentialBackoffRetryPolicy;
35+
import org.apache.commons.lang3.tuple.Pair;
3536
import org.apache.pulsar.common.util.FutureUtil;
3637
import org.apache.pulsar.metadata.api.GetResult;
3738
import org.apache.pulsar.metadata.api.MetadataStore;
@@ -201,10 +202,15 @@ protected void batchOperation(List<MetadataOp> ops) {
201202
Collectors.groupingBy(MetadataOp::getType, Collectors.summingInt(op -> 1)))
202203
.entrySet().stream().map(e -> e.getValue() + " " + e.getKey().name() + " entries")
203204
.collect(Collectors.joining(", "));
205+
List<Pair> opsForLog = ops.stream()
206+
.filter(item -> item.size() > 256 * 1024)
207+
.map(op -> Pair.of(op.getPath(), op.size()))
208+
.collect(Collectors.toList());
204209
Long totalSize = ops.stream().collect(Collectors.summingLong(MetadataOp::size));
205210
log.warn("Connection loss while executing batch operation of {} "
206211
+ "of total data size of {}. "
207-
+ "Retrying individual operations one-by-one.", countsByType, totalSize);
212+
+ "Retrying individual operations one-by-one. ops whose size > 256KB: {}",
213+
countsByType, totalSize, opsForLog);
208214

209215
// Retry with the individual operations
210216
executor.schedule(() -> {

pulsar-metadata/src/main/java/org/apache/pulsar/metadata/impl/batching/MetadataOp.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,4 +51,6 @@ default OpGetChildren asGetChildren() {
5151
default OpPut asPut() {
5252
return (OpPut) this;
5353
}
54+
55+
String getPath();
5456
}

0 commit comments

Comments
 (0)