Amarjit Atwal
08/25/2026, 9:43 AM026-08-25 10:29:06 replication-orchestrator INFO failures: [ {
"failureOrigin" : "destination",
"failureType" : "system_error",
"internalMessage" : "java.lang.ClassCastException: class io.airbyte.cdk.load.data.NullValue cannot be cast to class io.airbyte.cdk.load.data.TimestampWithoutTimezoneValue (io.airbyte.cdk.load.data.NullValue and io.airbyte.cdk.load.data.TimestampWithoutTimezoneValue are in unnamed module of loader 'app')",
"externalMessage" : "class io.airbyte.cdk.load.data.NullValue cannot be cast to class io.airbyte.cdk.load.data.TimestampWithoutTimezoneValue (io.airbyte.cdk.load.data.NullValue and io.airbyte.cdk.load.data.TimestampWithoutTimezoneValue are in unnamed module of loader 'app')",
"metadata" : {
"attemptNumber" : 5,
"jobId" : 27125,
"from_trace_message" : true,
"connector_command" : "write"
},
"stacktrace" : "java.lang.ClassCastException: class io.airbyte.cdk.load.data.NullValue cannot be cast to class io.airbyte.cdk.load.data.TimestampWithoutTimezoneValue (io.airbyte.cdk.load.data.NullValue and io.airbyte.cdk.load.data.TimestampWithoutTimezoneValue are in unnamed module of loader 'app')\n\tat io.airbyte.integrations.destination.bigquery.formatter.BigQueryRecordFormatter$Companion.formatTimestampWithoutTimezone(BigQueryRecordFormatter.kt:233)\n\tat io.airbyte.integrations.destination.bigquery.formatter.BigQueryRecordFormatter.formatRecord(BigQueryRecordFormatter.kt:105)\n\tat io.airbyte.integrations.destination.bigquery.write.standard_insert.BigqueryBatchStandardInsertsLoader.accept(BigqueryBatchStandardInsertLoader.kt:69)\n\tat io.airbyte.cdk.load.pipeline.DirectLoadRecordAccumulator.accept(DirectLoadRecordAccumulator.kt:37)\n\tat io.airbyte.cdk.load.pipeline.DirectLoadRecordAccumulator.accept(DirectLoadRecordAccumulator.kt:24)\n\tat io.airbyte.cdk.load.task.internal.LoadPipelineStepTask$execute$$inlined$fold$1.emit(Reduce.kt:225)\n\tat kotlinx.coroutines.flow.FlowKt__ChannelsKt.emitAllImpl$FlowKt__ChannelsKt(Channels.kt:33)\n\tat kotlinx.coroutines.flow.FlowKt__ChannelsKt.access$emitAllImpl$FlowKt__ChannelsKt(Channels.kt:1)\n\tat kotlinx.coroutines.flow.FlowKt__ChannelsKt$emitAllImpl$1.invokeSuspend(Channels.kt)\n\tat kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)\n\tat kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)\n\tat kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:124)\n\tat kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:89)\n\tat kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:586)\n\tat kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:820)\n\tat kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:717)\n\tat kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:704)\n",
"timestamp" : 1787650081659
}, {
"failureOrigin" : "destination",
"internalMessage" : "Destination process exited with non-zero exit code 1",
"externalMessage" : "Something went wrong within the destination connector",
"metadata" : {
"attemptNumber" : 5,
"jobId" : 27125,
"connector_command" : "write"
},
"stacktrace" : "io.airbyte.workers.internal.exception.DestinationException: Destination process exited with non-zero exit code 1\n\tat io.airbyte.workers.general.BufferedReplicationWorker.readFromDestination(BufferedReplicationWorker.java:503)\n\tat io.airbyte.workers.general.BufferedReplicationWorker.lambda$runAsync$2(BufferedReplicationWorker.java:216)\n\tat java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)\n\tat java.base/java.lang.Thread.run(Thread.java:1583)\n",
"timestamp" : 1787650081984
}, {
"failureOrigin" : "destination",
"internalMessage" : "Destination process message delivery failed",
"externalMessage" : "Something went wrong within the destination connector",
"metadata" : {
"attemptNumber" : 5,
"jobId" : 27125,
"connector_command" : "write"
},
"stacktrace" : "io.airbyte.workers.internal.exception.DestinationException: Destination process message delivery failed\n\tat io.airbyte.workers.general.BufferedReplicationWorker.writeToDestination(BufferedReplicationWorker.java:454)\n\tat io.airbyte.workers.general.BufferedReplicationWorker.lambda$runAsyncWithTimeout$5(BufferedReplicationWorker.java:244)\n\tat java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)\n\tat java.base/java.lang.Thread.run(Thread.java:1583)\nCaused by: java.io.IOException: Broken pipe\n\tat java.base/sun.nio.ch.UnixFileDispatcherImpl.write0(Native Method)\n\tat java.base/sun.nio.ch.UnixFileDispatcherImpl.write(UnixFileDispatcherImpl.java:65)\n\tat java.base/sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:137)\n\tat java.base/sun.nio.ch.IOUtil.write(IOUtil.java:102)\n\tat java.base/sun.nio.ch.IOUtil.write(IOUtil.java:72)\n\tat java.base/sun.nio.ch.FileChannelImpl.write(FileChannelImpl.java:300)\n\tat java.base/sun.nio.ch.ChannelOutputStream.writeFully(ChannelOutputStream.java:68)\n\tat java.base/sun.nio.ch.ChannelOutputStream.write(ChannelOutputStream.java:105)\n\tat java.base/sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:309)\n\tat java.base/sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:381)\n\tat java.base/sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:357)\n\tat java.base/sun.nio.cs.StreamEncoder.lockedWrite(StreamEncoder.java:158)\n\tat java.base/sun.nio.cs.StreamEncoder.write(StreamEncoder.java:139)\n\tat java.base/java.io.OutputStreamWriter.write(OutputStreamWriter.java:219)\n\tat java.base/java.io.BufferedWriter.implFlushBuffer(BufferedWriter.java:178)\n\tat java.base/java.io.BufferedWriter.flushBuffer(BufferedWriter.java:163)\n\tat java.base/java.io.BufferedWriter.implWrite(BufferedWriter.java:334)\n\tat java.base/java.io.BufferedWriter.write(BufferedWriter.java:313)\n\tat java.base/java.io.Writer.write(Writer.java:278)\n\tat io.airbyte.workers.internal.VersionedAirbyteMessageBufferedWriter.write(VersionedAirbyteMessageBufferedWriter.java:39)\n\tat io.airbyte.workers.internal.LocalContainerAirbyteDestination.acceptWithNoTimeoutMonitor(LocalContainerAirbyteDestination.kt:137)\n\tat io.airbyte.workers.internal.LocalContainerAirbyteDestination.accept(LocalContainerAirbyteDestination.kt:96)\n\tat io.airbyte.workers.general.BufferedReplicationWorker.writeToDestination(BufferedReplicationWorker.java:439)\n\t... 5 more\n",
"timestamp" : 1787650086497
}, {
"failureOrigin" : "source",
"internalMessage" : "Source process read attempt failed",
"externalMessage" : "Something went wrong within the source connector",
"metadata" : {
"attemptNumber" : 5,
"jobId" : 27125,
"connector_command" : "read"
},
"stacktrace" : "io.airbyte.workers.internal.exception.SourceException: Source process read attempt failed\n\tat io.airbyte.workers.general.BufferedReplicationWorker.readFromSource(BufferedReplicationWorker.java:376)\n\tat io.airbyte.workers.general.BufferedReplicationWorker.lambda$runAsyncWithHeartbeatCheck$3(BufferedReplicationWorker.java:223)\n\tat java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)\n\tat java.base/java.lang.Thread.run(Thread.java:1583)\nCaused by: java.lang.IllegalStateException: No exit code found.\n\tat io.airbyte.workers.internal.ContainerIOHandle.getExitCode(ContainerIOHandle.kt:98)\n\tat io.airbyte.workers.internal.LocalContainerAirbyteSource.getExitValue(LocalContainerAirbyteSource.kt:89)\n\tat io.airbyte.workers.general.BufferedReplicationWorker.readFromSource(BufferedReplicationWorker.java:356)\n\t... 5 more\n",
"timestamp" : 1787650086598
}, {
"failureOrigin" : "replication",
"internalMessage" : "io.airbyte.workers.exception.WorkerException: Destination process exit with code 1. This warning is normal if the job was cancelled.",
"externalMessage" : "Something went wrong during replication",
"metadata" : {
"attemptNumber" : 5,
"jobId" : 27125
},
"stacktrace" : "java.lang.RuntimeException: io.airbyte.workers.exception.WorkerException: Destination process exit with code 1. This warning is normal if the job was cancelled.\n\tat io.airbyte.workers.general.BufferedReplicationWorker$CloseableWithTimeout.lambda$close$0(BufferedReplicationWorker.java:548)\n\tat io.airbyte.workers.general.BufferedReplicationWorker.lambda$runAsyncWithTimeout$5(BufferedReplicationWorker.java:244)\n\tat java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)\n\tat java.base/java.lang.Thread.run(Thread.java:1583)\nCaused by: io.airbyte.workers.exception.WorkerException: Destination process exit with code 1. This warning is normal if the job was cancelled.\n\tat io.airbyte.workers.internal.LocalContainerAirbyteDestination.close(LocalContainerAirbyteDestination.kt:61)\n\tat io.airbyte.workers.general.BufferedReplicationWorker$CloseableWithTimeout.lambda$close$0(BufferedReplicationWorker.java:546)\n\t... 5 more\n",
"timestamp" : 1787650086604
} ]
2026-08-25 10:29:06 replication-orchestrator INFO
2026-08-25 10:29:06 replication-orchestrator INFO ----- END REPLICATION -----
2026-08-25 10:29:06 replication-orchestrator INFO
2026-08-25 10:29:06 replication-orchestrator INFO Returning output...
2026-08-25 10:29:07 platform INFO Closing Segment analytics client...
2026-08-25 10:29:07 platform INFO Waiting for Segment analytic client to flush enqueued messages...
2026-08-25 10:29:07 platform INFO
----- START POST REPLICATION OPERATIONS -----
2026-08-25 10:29:07 platform INFO No post-replication operation(s) to perform.
2026-08-25 10:29:07 platform INFO
----- END POST REPLICATION OPERATIONS -----
2026-08-25 10:29:07 platform INFO Retry State: RetryManager(completeFailureBackoffPolicy=BackoffPolicy(minInterval=PT10S, maxInterval=PT30M, base=3), partialFailureBackoffPolicy=null, successiveCompleteFailureLimit=5, successivePartialFailureLimit=1000, totalCompleteFailureLimit=10, totalPartialFailureLimit=20, successiveCompleteFailures=5, successivePartialFailures=0, totalCompleteFailures=5, totalPartialFailures=1)
Backoff before next attempt: 13 minutes 30 seconds
2026-08-25 10:29:07 platform ERROR Failing job: 27125, reason: Job failed after too many retries for connection 719ce18b-72fc-4af9-9fb5-8d2b94c26d2c
2026-08-25 10:29:07 platform INFO Segment analytic client flush complete.
2026-08-25 10:29:07 platform INFO Segment analytics client closed. No new events will be accepted.
Could you diagnose the failure please.kapa.ai
08/25/2026, 9:43 AMjava.lang.ClassCastException: class io.airbyte.cdk.load.data.NullValue cannot be cast to
class io.airbyte.cdk.load.data.TimestampWithoutTimezoneValue
at io.airbyte.integrations.destination.bigquery.formatter.BigQueryRecordFormatter$Companion
.formatTimestampWithoutTimezone(BigQueryRecordFormatter.kt:233)
What's happening Your destination-bigquery connector is receiving a record where a field declared as TimestampWithoutTimezone type contains a null value. When the BigQueryRecordFormatter tries to format that field, it attempts to cast the value directly to TimestampWithoutTimezoneValue without first checking whether the value is actually NullValue — causing the ClassCastException. [NullValue cast issue]
The cascade of subsequent errors (broken pipe, source read failure, destination exit code 1) are all secondary effects of the destination process crashing due to this exception.
What triggers it This happens when:
• One or more records in your source data have a null value in a field that is typed as timestamp (without timezone) in the stream schema.
• The BigQuery destination connector does not handle the NullValue case before attempting to format the timestamp field.
Recommended actions 1. Check your source data — Identify which stream/field contains null timestamps. Look for fields in your schema typed as timestamp (without timezone) that may legitimately contain nulls.
2. This is a known bug — This issue has been reported and is tracked as an open bug in the Airbyte repository. [NullValue cast issue] The fix requires the formatTimestampWithoutTimezone method to handle NullValue before casting.
3. Workarounds to try in the meantime:
◦ If possible, cast the nullable timestamp field to a string on the source side to avoid the type mismatch.
◦ Modify the stream schema in Airbyte to declare the problematic field as string type instead of timestamp without timezone, so the connector won't attempt timestamp formatting.
◦ Check if a newer version of the destination-bigquery connector is available that includes a fix for this issue, and upgrade if so.
1. Check the BigQueryCSVRowGenerator — Note that the bulk loader path (BigQueryCSVRowGenerator) does correctly check for NullValue before formatting: [CSV row generator]if (actualValue is NullValue) {
return@forEach
}However, the standard insert path (BigQueryRecordFormatter.formatTimestampWithoutTimezone) does not have this guard, which is why you're hitting the crash. Your sync is using the standard insert path. 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.Amarjit Atwal
08/25/2026, 9:47 AMkapa.ai
08/25/2026, 9:48 AMBigQueryRecordFormatter.formatTimestampWithoutTimezone method in the standard insert path. [NullValue cast issue]
• There is no changelog or release notes for version 3.0.22 in the available knowledge sources, so I cannot confirm whether the fix was included in that version.
What I'd recommend 1. Check the connector's changelog directly in the Airbyte GitHub repository or the Airbyte connector registry for the destination-bigquery release notes between 3.0.10 and 3.0.22.
2. Check the open GitHub issue at github.com/airbytehq/airbyte/issues/69032 — if the issue has been closed or linked to a PR, the PR description will typically mention which connector version includes the fix.
3. As a precaution, even if you upgrade, the underlying trigger (null values in timestamp-typed fields in your source data) will still exist. It's worth identifying and addressing those records on the source side as well, as a defensive measure. 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.