apache/beam · info
DNP: Reconciling missing partition
Error message
DNP: Reconciling missing partition: {} What it means
DetectNewPartitionsAction logs 'DNP: Reconciling missing partition: {}' when computing the new watermark it finds gaps in the keyspace coverage and must reconcile (attempt to re-register) missing partitions before the watermark can advance. It is an informational reconciliation signal from the Bigtable change stream connector.
Solutions
- No action usually needed; the connector reconciles automatically.
- If the same partition is logged repeatedly, inspect the metadata table and parent partition coverage for that range.
- Check that new partitions' parent lists cover the same keyspace (see ProcessNewPartitionsAction) to avoid repeated reconciliation failures.
Defensive patterns
Strategy: validation
Prevention
- Treat this as informational; only investigate if the same partition is logged repeatedly.
- Maintain healthy table split practices during streaming runs.
- Keep connector versions current for robust reconciliation.
When it happens
Trigger: getNewWatermark (via maybeWatermark) computes missingPartitions from the entire keyspace and each missing range must be reconciled against newPartitions/parent partitions.
Common situations: Ongoing split/merge operations; first runs after pipeline start; recovery after metadata inconsistency. Usually self-healing.
Understand the failure class
Background: "This is a bug, please report it": internal invariant violations, unreachable panics, and SNH errors explained — this error's family across 47 libraries.
Related errors
- DNP: Updating watermark failed due to missing
- DNP: Updating watermark failed due to overlapping
- DNP: New partition does not have all the parents
- RCSP : CloseStream has tokens that don't cover the entire…
- RCSP : Invalid response type
AI-assisted analysis of apache/beam@12126d8942 (2026-09-13).
Data as JSON: /api/errors/0cf06698d47c16d7.
Report an issue: GitHub.
Appendix: source
Thrown at sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/bigtable/changestreams/action/DetectNewPartitionsAction.java:164
LOG.warn(
"DNP: Updating watermark failed due to overlapping: {}",
partitionsToString(overlappingStreamPartitions));
return Optional.empty();
}
for (NewPartition newPartition : newPartitions) {
partitions.addAll(newPartition.getParentPartitions());
if (newPartition.getLowWatermark().compareTo(lowWatermark) < 0) {
lowWatermark = newPartition.getLowWatermark();
}
}
List<ByteStringRange> missingPartitions = getMissingPartitionsFromEntireKeySpace(partitions);
if (missingPartitions.isEmpty()) {
LOG.info("DNP: Updating watermark: {}", lowWatermark);
return Optional.of(lowWatermark);
}
LOG.warn(
"DNP: Updating watermark failed due to missing {} partitions : {}.",
missingPartitions.size(),
partitionsToString(missingPartitions));
return Optional.empty();
}
/**
* Uses PartitionReconciler to process any partitions that it has found to be missing for too long
* and restarts them. For more details on why this is necessary see {@link PartitionReconciler}
*
* @param receiver used to output reconciled partitions
* @param watermarkEstimator read the low watermark for all partitions
*/
private void processReconcilerPartitions(
OutputReceiver<PartitionRecord> receiver,
ManualWatermarkEstimator<Instant> watermarkEstimator,
Instant startTime) {
for (PartitionRecord reconciledPartition :View on GitHub (pinned to 12126d8942)