lkindere opened a new issue, #12792:
URL: https://github.com/apache/iceberg/issues/12792
### Apache Iceberg version
1.7.1
### Query engine
Spark
### Please describe the bug 🐞
Hello,
We have noticed an issue where if a request fails to the catalog while
executing manifest rewrite it will sometimes corrupt the table.
how we think it happens:
SnapshotProducer tries to commit, sends the request to catalog, catalog
registers the request but the response is never received (timeout),
SnapshotProducer attemps to clean up deleting all newly created files, however
the catalog did register the new metadata file and is now missing the files
SnapshotProducer cleaned up
Example:
`RESTException: Error occurred while processing POST request
Caused by: SocketTimeoutException: Read timed out
at org.apache.iceberg.rest.HTTPClient.execute(HTTPClient.java:332)
at org.apache.iceberg.rest.HTTPClient.execute(HTTPClient.java:252)
at org.apache.iceberg.rest.HTTPClient.post(HTTPClient.java:358)
at org.apache.iceberg.rest.RESTClient.post(RESTClient.java:112)
at
org.apache.iceberg.rest.RESTTableOperations.commit(RESTTableOperations.java:152)
at
org.apache.iceberg.SnapshotProducer.lambda$commit$2(SnapshotProducer.java:408)
at
org.apache.iceberg.util.Tasks$Builder.runTaskWithRetry(Tasks.java:413)
at
org.apache.iceberg.util.Tasks$Builder.runSingleThreaded(Tasks.java:219)
at org.apache.iceberg.util.Tasks$Builder.run(Tasks.java:203)
at org.apache.iceberg.util.Tasks$Builder.run(Tasks.java:196)
at org.apache.iceberg.SnapshotProducer.commit(SnapshotProducer.java:382)
at
org.apache.iceberg.BaseRewriteManifests.commit(BaseRewriteManifests.java:48)
at
org.apache.iceberg.spark.actions.BaseSnapshotUpdateSparkAction.commit(BaseSnapshotUpdateSparkAction.java:41)
at
org.apache.iceberg.spark.actions.RewriteManifestsSparkAction.replaceManifests(RewriteManifestsSparkAction.java:348)
at
org.apache.iceberg.spark.actions.RewriteManifestsSparkAction.doExecute(RewriteManifestsSparkAction.java:186)
at
org.apache.iceberg.spark.JobGroupUtils.withJobGroupInfo(JobGroupUtils.java:59)
at
org.apache.iceberg.spark.JobGroupUtils.withJobGroupInfo(JobGroupUtils.java:51)
at
org.apache.iceberg.spark.actions.BaseSparkAction.withJobGroupInfo(BaseSparkAction.java:130)
at
org.apache.iceberg.spark.actions.RewriteManifestsSparkAction.execute(RewriteManifestsSparkAction.java:167)
at
wcdp2.maintenance.core.ManifestCompactor$.compact(ManifestCompactor.scala:11)
at
wcdp2.maintenance.core.TableMaintainer$.runCompaction(TableMaintainer.scala:20)
at wcdp2.maintenance.Main$.$anonfun$main$1(Main.scala:23)
at wcdp2.maintenance.Main$.$anonfun$main$1$adapted(Main.scala:22)
at scala.collection.immutable.List.foreach(List.scala:431)
at wcdp2.maintenance.Main$.main(Main.scala:22)
at
$linea2402368d58a4f64b0b63f730078664e25.$read$$iw$$iw$$iw$$iw$$iw$$iw.<init>(command--1:1)
at
$linea2402368d58a4f64b0b63f730078664e25.$read$$iw$$iw$$iw$$iw$$iw.<init>(command--1:43)
at
$linea2402368d58a4f64b0b63f730078664e25.$read$$iw$$iw$$iw$$iw.<init>(command--1:45)
at
$linea2402368d58a4f64b0b63f730078664e25.$read$$iw$$iw$$iw.<init>(command--1:47)
at
$linea2402368d58a4f64b0b63f730078664e25.$read$$iw$$iw.<init>(command--1:49)
at
$linea2402368d58a4f64b0b63f730078664e25.$read$$iw.<init>(command--1:51)
at $linea2402368d58a4f64b0b63f730078664e25.$read.<init>(command--1:53)
at $linea2402368d58a4f64b0b63f730078664e25.$read$.<init>(command--1:57)
at $linea2402368d58a4f64b0b63f730078664e25.$read$.<clinit>(command--1)
at
$linea2402368d58a4f64b0b63f730078664e25.$eval$.$print$lzycompute(<notebook>:7)
at $linea2402368d58a4f64b0b63f730078664e25.$eval$.$print(<notebook>:6)
at $linea2402368d58a4f64b0b63f730078664e25.$eval.$print(<notebook>)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at scala.tools.nsc.interpreter.IMain$ReadEvalPrint.call(IMain.scala:747)
at
scala.tools.nsc.interpreter.IMain$Request.loadAndRun(IMain.scala:1020)
at
scala.tools.nsc.interpreter.IMain.$anonfun$interpret$1(IMain.scala:568)
at
scala.reflect.internal.util.ScalaClassLoader.asContext(ScalaClassLoader.scala:36)
at
scala.reflect.internal.util.ScalaClassLoader.asContext$(ScalaClassLoader.scala:116)
at
scala.reflect.internal.util.AbstractFileClassLoader.asContext(AbstractFileClassLoader.scala:41)
at scala.tools.nsc.interpreter.IMain.loadAndRunReq$1(IMain.scala:567)
at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:594)
at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:564)
at
com.databricks.backend.daemon.driver.DriverILoop.execute(DriverILoop.scala:223)
at
com.databricks.backend.daemon.driver.ScalaDriverLocal.$anonfun$repl$1(ScalaDriverLocal.scala:237)
at
scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
at
com.databricks.backend.daemon.driver.DriverLocal$TrapExitInternal$.trapExit(DriverLocal.scala:1564)
at
com.databricks.backend.daemon.driver.DriverLocal$TrapExit$.apply(DriverLocal.scala:1489)
at
com.databricks.backend.daemon.driver.ScalaDriverLocal.repl(ScalaDriverLocal.scala:237)
at
com.databricks.backend.daemon.driver.DriverLocal.$anonfun$execute$39(DriverLocal.scala:1130)
at com.databricks.unity.EmptyHandle$.runWith(UCSHandle.scala:133)
at
com.databricks.backend.daemon.driver.DriverLocal.$anonfun$execute$27(DriverLocal.scala:1121)
at
com.databricks.logging.UsageLogging.$anonfun$withAttributionContext$1(UsageLogging.scala:426)
at scala.util.DynamicVariable.withValue(DynamicVariable.scala:62)
at
com.databricks.logging.AttributionContext$.withValue(AttributionContext.scala:216)
at
com.databricks.logging.UsageLogging.withAttributionContext(UsageLogging.scala:424)
at
com.databricks.logging.UsageLogging.withAttributionContext$(UsageLogging.scala:418)
at
com.databricks.backend.daemon.driver.DriverLocal.withAttributionContext(DriverLocal.scala:94)
at
com.databricks.logging.UsageLogging.withAttributionTags(UsageLogging.scala:472)
at
com.databricks.logging.UsageLogging.withAttributionTags$(UsageLogging.scala:455)
at
com.databricks.backend.daemon.driver.DriverLocal.withAttributionTags(DriverLocal.scala:94)
at
com.databricks.backend.daemon.driver.DriverLocal.$anonfun$execute$1(DriverLocal.scala:1057)
at
com.databricks.backend.daemon.driver.DriverLocal$.$anonfun$maybeSynchronizeExecution$4(DriverLocal.scala:1517)
at
com.databricks.backend.daemon.driver.DriverLocal.execute(DriverLocal.scala:739)
at
com.databricks.backend.daemon.driver.DriverWrapper.$anonfun$tryExecutingCommand$2(DriverWrapper.scala:798)
at scala.util.Try$.apply(Try.scala:213)
at
com.databricks.backend.daemon.driver.DriverWrapper.$anonfun$tryExecutingCommand$1(DriverWrapper.scala:790)
at
com.databricks.backend.daemon.driver.DriverWrapper.$anonfun$tryExecutingCommand$3(DriverWrapper.scala:830)
at
com.databricks.logging.UsageLogging.executeThunkAndCaptureResultTags$1(UsageLogging.scala:669)
at
com.databricks.logging.UsageLogging.$anonfun$recordOperationWithResultTags$4(UsageLogging.scala:687)
at
com.databricks.logging.UsageLogging.$anonfun$withAttributionContext$1(UsageLogging.scala:426)
at scala.util.DynamicVariable.withValue(DynamicVariable.scala:62)
at
com.databricks.logging.AttributionContext$.withValue(AttributionContext.scala:216)
at
com.databricks.logging.UsageLogging.withAttributionContext(UsageLogging.scala:424)
at
com.databricks.logging.UsageLogging.withAttributionContext$(UsageLogging.scala:418)
at
com.databricks.backend.daemon.driver.DriverWrapper.withAttributionContext(DriverWrapper.scala:72)
at
com.databricks.logging.UsageLogging.withAttributionTags(UsageLogging.scala:472)
at
com.databricks.logging.UsageLogging.withAttributionTags$(UsageLogging.scala:455)
at
com.databricks.backend.daemon.driver.DriverWrapper.withAttributionTags(DriverWrapper.scala:72)
at
com.databricks.logging.UsageLogging.recordOperationWithResultTags(UsageLogging.scala:664)
at
com.databricks.logging.UsageLogging.recordOperationWithResultTags$(UsageLogging.scala:582)
at
com.databricks.backend.daemon.driver.DriverWrapper.recordOperationWithResultTags(DriverWrapper.scala:72)
at
com.databricks.backend.daemon.driver.DriverWrapper.tryExecutingCommand(DriverWrapper.scala:830)
at
com.databricks.backend.daemon.driver.DriverWrapper.executeCommandAndGetError(DriverWrapper.scala:697)
at
com.databricks.backend.daemon.driver.DriverWrapper.executeCommand(DriverWrapper.scala:742)
at
com.databricks.backend.daemon.driver.DriverWrapper.$anonfun$runInnerLoop$1(DriverWrapper.scala:572)
at
scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
at
com.databricks.logging.UsageLogging.$anonfun$withAttributionContext$1(UsageLogging.scala:426)
at scala.util.DynamicVariable.withValue(DynamicVariable.scala:62)
at
com.databricks.logging.AttributionContext$.withValue(AttributionContext.scala:216)
at
com.databricks.logging.UsageLogging.withAttributionContext(UsageLogging.scala:424)
at
com.databricks.logging.UsageLogging.withAttributionContext$(UsageLogging.scala:418)
at
com.databricks.backend.daemon.driver.DriverWrapper.withAttributionContext(DriverWrapper.scala:72)
at
com.databricks.backend.daemon.driver.DriverWrapper.runInnerLoop(DriverWrapper.scala:572)
at
com.databricks.backend.daemon.driver.DriverWrapper.runInner(DriverWrapper.scala:482)
at
com.databricks.backend.daemon.driver.DriverWrapper.run(DriverWrapper.scala:290)
at java.lang.Thread.run(Thread.java:750)
Caused by: java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
at java.net.SocketInputStream.read(SocketInputStream.java:171)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at
sun.security.ssl.SSLSocketInputRecord.read(SSLSocketInputRecord.java:476)
at
sun.security.ssl.SSLSocketInputRecord.readHeader(SSLSocketInputRecord.java:470)
at
sun.security.ssl.SSLSocketInputRecord.bytesInCompletePacket(SSLSocketInputRecord.java:70)
at
sun.security.ssl.SSLSocketImpl.readApplicationRecord(SSLSocketImpl.java:1373)
at sun.security.ssl.SSLSocketImpl.access$300(SSLSocketImpl.java:73)
at
sun.security.ssl.SSLSocketImpl$AppInputStream.read(SSLSocketImpl.java:982)
at
org.apache.iceberg.shaded.org.apache.hc.core5.http.impl.io.SessionInputBufferImpl.fillBuffer(SessionInputBufferImpl.java:149)
at
org.apache.iceberg.shaded.org.apache.hc.core5.http.impl.io.SessionInputBufferImpl.readLine(SessionInputBufferImpl.java:280)
at
org.apache.iceberg.shaded.org.apache.hc.core5.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:247)
at
org.apache.iceberg.shaded.org.apache.hc.core5.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:54)
at
org.apache.iceberg.shaded.org.apache.hc.core5.http.impl.io.DefaultBHttpClientConnection.receiveResponseHeader(DefaultBHttpClientConnection.java:299)
at
org.apache.iceberg.shaded.org.apache.hc.core5.http.impl.io.HttpRequestExecutor.execute(HttpRequestExecutor.java:175)
at
org.apache.iceberg.shaded.org.apache.hc.core5.http.impl.io.HttpRequestExecutor.execute(HttpRequestExecutor.java:218)
at
org.apache.iceberg.shaded.org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager$InternalConnectionEndpoint.execute(PoolingHttpClientConnectionManager.java:717)
at
org.apache.iceberg.shaded.org.apache.hc.client5.http.impl.classic.InternalExecRuntime.execute(InternalExecRuntime.java:216)
at
org.apache.iceberg.shaded.org.apache.hc.client5.http.impl.classic.MainClientExec.execute(MainClientExec.java:116)
at
org.apache.iceberg.shaded.org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
at
org.apache.iceberg.shaded.org.apache.hc.client5.http.impl.classic.ConnectExec.execute(ConnectExec.java:188)
at
org.apache.iceberg.shaded.org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
at
org.apache.iceberg.shaded.org.apache.hc.client5.http.impl.classic.ProtocolExec.execute(ProtocolExec.java:192)
at
org.apache.iceberg.shaded.org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
at
org.apache.iceberg.shaded.org.apache.hc.client5.http.impl.classic.HttpRequestRetryExec.execute(HttpRequestRetryExec.java:113)
at
org.apache.iceberg.shaded.org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
at
org.apache.iceberg.shaded.org.apache.hc.client5.http.impl.classic.ContentCompressionExec.execute(ContentCompressionExec.java:152)
at
org.apache.iceberg.shaded.org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
at
org.apache.iceberg.shaded.org.apache.hc.client5.http.impl.classic.RedirectExec.execute(RedirectExec.java:116)
at
org.apache.iceberg.shaded.org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
at
org.apache.iceberg.shaded.org.apache.hc.client5.http.impl.classic.InternalHttpClient.doExecute(InternalHttpClient.java:170)
at
org.apache.iceberg.shaded.org.apache.hc.client5.http.impl.classic.CloseableHttpClient.execute(CloseableHttpClient.java:123)
at org.apache.iceberg.rest.HTTPClient.execute(HTTPClient.java:295)
at org.apache.iceberg.rest.HTTPClient.execute(HTTPClient.java:252)
at org.apache.iceberg.rest.HTTPClient.post(HTTPClient.java:358)
at org.apache.iceberg.rest.RESTClient.post(RESTClient.java:112)
at
org.apache.iceberg.rest.RESTTableOperations.commit(RESTTableOperations.java:152)
at
org.apache.iceberg.SnapshotProducer.lambda$commit$2(SnapshotProducer.java:408)
at
org.apache.iceberg.util.Tasks$Builder.runTaskWithRetry(Tasks.java:413)
at
org.apache.iceberg.util.Tasks$Builder.runSingleThreaded(Tasks.java:219)
at org.apache.iceberg.util.Tasks$Builder.run(Tasks.java:203)
at org.apache.iceberg.util.Tasks$Builder.run(Tasks.java:196)
at org.apache.iceberg.SnapshotProducer.commit(SnapshotProducer.java:382)
at
org.apache.iceberg.BaseRewriteManifests.commit(BaseRewriteManifests.java:48)
at
org.apache.iceberg.spark.actions.BaseSnapshotUpdateSparkAction.commit(BaseSnapshotUpdateSparkAction.java:41)
at
org.apache.iceberg.spark.actions.RewriteManifestsSparkAction.replaceManifests(RewriteManifestsSparkAction.java:348)
at
org.apache.iceberg.spark.actions.RewriteManifestsSparkAction.doExecute(RewriteManifestsSparkAction.java:186)
at
org.apache.iceberg.spark.JobGroupUtils.withJobGroupInfo(JobGroupUtils.java:59)
at
org.apache.iceberg.spark.JobGroupUtils.withJobGroupInfo(JobGroupUtils.java:51)
at
org.apache.iceberg.spark.actions.BaseSparkAction.withJobGroupInfo(BaseSparkAction.java:130)
at
org.apache.iceberg.spark.actions.RewriteManifestsSparkAction.execute(RewriteManifestsSparkAction.java:167)
at
wcdp2.maintenance.core.ManifestCompactor$.compact(ManifestCompactor.scala:11)
at
wcdp2.maintenance.core.TableMaintainer$.runCompaction(TableMaintainer.scala:20)
at wcdp2.maintenance.Main$.$anonfun$main$1(Main.scala:23)
at wcdp2.maintenance.Main$.$anonfun$main$1$adapted(Main.scala:22)
at scala.collection.immutable.List.foreach(List.scala:431)
at wcdp2.maintenance.Main$.main(Main.scala:22)
at
$linea2402368d58a4f64b0b63f730078664e25.$read$$iw$$iw$$iw$$iw$$iw$$iw.<init>(command--1:1)
at
$linea2402368d58a4f64b0b63f730078664e25.$read$$iw$$iw$$iw$$iw$$iw.<init>(command--1:43)
at
$linea2402368d58a4f64b0b63f730078664e25.$read$$iw$$iw$$iw$$iw.<init>(command--1:45)
at
$linea2402368d58a4f64b0b63f730078664e25.$read$$iw$$iw$$iw.<init>(command--1:47)
at
$linea2402368d58a4f64b0b63f730078664e25.$read$$iw$$iw.<init>(command--1:49)
at
$linea2402368d58a4f64b0b63f730078664e25.$read$$iw.<init>(command--1:51)
at $linea2402368d58a4f64b0b63f730078664e25.$read.<init>(command--1:53)
at $linea2402368d58a4f64b0b63f730078664e25.$read$.<init>(command--1:57)
at $linea2402368d58a4f64b0b63f730078664e25.$read$.<clinit>(command--1)
at
$linea2402368d58a4f64b0b63f730078664e25.$eval$.$print$lzycompute(<notebook>:7)
at $linea2402368d58a4f64b0b63f730078664e25.$eval$.$print(<notebook>:6)
at $linea2402368d58a4f64b0b63f730078664e25.$eval.$print(<notebook>)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at scala.tools.nsc.interpreter.IMain$ReadEvalPrint.call(IMain.scala:747)
at
scala.tools.nsc.interpreter.IMain$Request.loadAndRun(IMain.scala:1020)
at
scala.tools.nsc.interpreter.IMain.$anonfun$interpret$1(IMain.scala:568)
at
scala.reflect.internal.util.ScalaClassLoader.asContext(ScalaClassLoader.scala:36)
at
scala.reflect.internal.util.ScalaClassLoader.asContext$(ScalaClassLoader.scala:116)
at
scala.reflect.internal.util.AbstractFileClassLoader.asContext(AbstractFileClassLoader.scala:41)
at scala.tools.nsc.interpreter.IMain.loadAndRunReq$1(IMain.scala:567)
at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:594)
at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:564)
at
com.databricks.backend.daemon.driver.DriverILoop.execute(DriverILoop.scala:223)
at
com.databricks.backend.daemon.driver.ScalaDriverLocal.$anonfun$repl$1(ScalaDriverLocal.scala:237)
at
scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
at
com.databricks.backend.daemon.driver.DriverLocal$TrapExitInternal$.trapExit(DriverLocal.scala:1564)
at
com.databricks.backend.daemon.driver.DriverLocal$TrapExit$.apply(DriverLocal.scala:1489)
at
com.databricks.backend.daemon.driver.ScalaDriverLocal.repl(ScalaDriverLocal.scala:237)
at
com.databricks.backend.daemon.driver.DriverLocal.$anonfun$execute$39(DriverLocal.scala:1130)
at com.databricks.unity.EmptyHandle$.runWith(UCSHandle.scala:133)
at
com.databricks.backend.daemon.driver.DriverLocal.$anonfun$execute$27(DriverLocal.scala:1121)
at
com.databricks.logging.UsageLogging.$anonfun$withAttributionContext$1(UsageLogging.scala:426)
at scala.util.DynamicVariable.withValue(DynamicVariable.scala:62)
at
com.databricks.logging.AttributionContext$.withValue(AttributionContext.scala:216)
at
com.databricks.logging.UsageLogging.withAttributionContext(UsageLogging.scala:424)
at
com.databricks.logging.UsageLogging.withAttributionContext$(UsageLogging.scala:418)
at
com.databricks.backend.daemon.driver.DriverLocal.withAttributionContext(DriverLocal.scala:94)
at
com.databricks.logging.UsageLogging.withAttributionTags(UsageLogging.scala:472)
at
com.databricks.logging.UsageLogging.withAttributionTags$(UsageLogging.scala:455)
at
com.databricks.backend.daemon.driver.DriverLocal.withAttributionTags(DriverLocal.scala:94)
at
com.databricks.backend.daemon.driver.DriverLocal.$anonfun$execute$1(DriverLocal.scala:1057)
at
com.databricks.backend.daemon.driver.DriverLocal$.$anonfun$maybeSynchronizeExecution$4(DriverLocal.scala:1517)
at
com.databricks.backend.daemon.driver.DriverLocal.execute(DriverLocal.scala:739)
at
com.databricks.backend.daemon.driver.DriverWrapper.$anonfun$tryExecutingCommand$2(DriverWrapper.scala:798)
at scala.util.Try$.apply(Try.scala:213)
at
com.databricks.backend.daemon.driver.DriverWrapper.$anonfun$tryExecutingCommand$1(DriverWrapper.scala:790)
at
com.databricks.backend.daemon.driver.DriverWrapper.$anonfun$tryExecutingCommand$3(DriverWrapper.scala:830)
at
com.databricks.logging.UsageLogging.executeThunkAndCaptureResultTags$1(UsageLogging.scala:669)
at
com.databricks.logging.UsageLogging.$anonfun$recordOperationWithResultTags$4(UsageLogging.scala:687)
at
com.databricks.logging.UsageLogging.$anonfun$withAttributionContext$1(UsageLogging.scala:426)
at scala.util.DynamicVariable.withValue(DynamicVariable.scala:62)
at
com.databricks.logging.AttributionContext$.withValue(AttributionContext.scala:216)
at
com.databricks.logging.UsageLogging.withAttributionContext(UsageLogging.scala:424)
at
com.databricks.logging.UsageLogging.withAttributionContext$(UsageLogging.scala:418)
at
com.databricks.backend.daemon.driver.DriverWrapper.withAttributionContext(DriverWrapper.scala:72)
at
com.databricks.logging.UsageLogging.withAttributionTags(UsageLogging.scala:472)
at
com.databricks.logging.UsageLogging.withAttributionTags$(UsageLogging.scala:455)
at
com.databricks.backend.daemon.driver.DriverWrapper.withAttributionTags(DriverWrapper.scala:72)
at
com.databricks.logging.UsageLogging.recordOperationWithResultTags(UsageLogging.scala:664)
at
com.databricks.logging.UsageLogging.recordOperationWithResultTags$(UsageLogging.scala:582)
at
com.databricks.backend.daemon.driver.DriverWrapper.recordOperationWithResultTags(DriverWrapper.scala:72)
at
com.databricks.backend.daemon.driver.DriverWrapper.tryExecutingCommand(DriverWrapper.scala:830)
at
com.databricks.backend.daemon.driver.DriverWrapper.executeCommandAndGetError(DriverWrapper.scala:697)
at
com.databricks.backend.daemon.driver.DriverWrapper.executeCommand(DriverWrapper.scala:742)
at
com.databricks.backend.daemon.driver.DriverWrapper.$anonfun$runInnerLoop$1(DriverWrapper.scala:572)
at
scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
at
com.databricks.logging.UsageLogging.$anonfun$withAttributionContext$1(UsageLogging.scala:426)
at scala.util.DynamicVariable.withValue(DynamicVariable.scala:62)
at
com.databricks.logging.AttributionContext$.withValue(AttributionContext.scala:216)
at
com.databricks.logging.UsageLogging.withAttributionContext(UsageLogging.scala:424)
at
com.databricks.logging.UsageLogging.withAttributionContext$(UsageLogging.scala:418)
at
com.databricks.backend.daemon.driver.DriverWrapper.withAttributionContext(DriverWrapper.scala:72)
at
com.databricks.backend.daemon.driver.DriverWrapper.runInnerLoop(DriverWrapper.scala:572)
at
com.databricks.backend.daemon.driver.DriverWrapper.runInner(DriverWrapper.scala:482)
at
com.databricks.backend.daemon.driver.DriverWrapper.run(DriverWrapper.scala:290)
at java.lang.Thread.run(Thread.java:750)`
Then any subsequent attempts to access this table will lead to missing files:
`BlobStorageException: Status code 404, "<?xml version="1.0"
encoding="utf-8"?><Error><Code>BlobNotFound</Code><Message>The specified blob
does not exist.
RequestId:e8c4eecc-e01e-003f-65fe-a99772000000
Time:2025-04-10T09:51:02.3477232Z</Message></Error>"
RequestId:e8c4eecc-e01e-003f-65fe-a99772000000
Time:2025-04-10T09:51:02.3477232Z</Message></Error>"
at
com.azure.storage.blob.implementation.util.ModelHelper.mapToBlobStorageException(ModelHelper.java:483)
at reactor.core.publisher.Mono.lambda$onErrorMap$30(Mono.java:3797)
at reactor.core.publisher.Mono.lambda$onErrorResume$32(Mono.java:3887)
at
reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:94)
at
reactor.core.publisher.MonoFlatMap$FlatMapMain.onError(MonoFlatMap.java:172)
at
reactor.core.publisher.MonoFlatMap$FlatMapMain.secondError(MonoFlatMap.java:192)
at
reactor.core.publisher.MonoFlatMap$FlatMapInner.onError(MonoFlatMap.java:259)
at
reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:142)
at
reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:74)
at
reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:129)
at
reactor.core.publisher.MonoUsing$MonoUsingSubscriber.onNext(MonoUsing.java:231)
at
reactor.core.publisher.FluxHandle$HandleSubscriber.onNext(FluxHandle.java:126)
at
reactor.core.publisher.FluxMap$MapConditionalSubscriber.onNext(FluxMap.java:224)
at
reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onNext(FluxDoFinally.java:113)
at
reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.onNext(FluxHandleFuseable.java:191)
at
reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107)
at
reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839)
at
reactor.core.publisher.MonoCollectList$MonoCollectListSubscriber.onComplete(MonoCollectList.java:129)
at
reactor.core.publisher.FluxPeek$PeekSubscriber.onComplete(FluxPeek.java:260)
at
reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144)
at
reactor.netty.channel.FluxReceive.onInboundComplete(FluxReceive.java:415)
at
reactor.netty.channel.ChannelOperations.onInboundComplete(ChannelOperations.java:439)
at
reactor.netty.channel.ChannelOperations.terminate(ChannelOperations.java:493)
at
reactor.netty.http.client.HttpClientOperations.onInboundNext(HttpClientOperations.java:789)
at
reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:114)
at
org.apache.iceberg.azure.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at
org.apache.iceberg.azure.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at
org.apache.iceberg.azure.shaded.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at
com.azure.core.http.netty.implementation.AzureSdkHandler.channelRead(AzureSdkHandler.java:224)
at
org.apache.iceberg.azure.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
at
org.apache.iceberg.azure.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at
org.apache.iceberg.azure.shaded.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at
org.apache.iceberg.azure.shaded.io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)
at
org.apache.iceberg.azure.shaded.io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346)
at
org.apache.iceberg.azure.shaded.io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318)
at
org.apache.iceberg.azure.shaded.io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)
at
org.apache.iceberg.azure.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
at
org.apache.iceberg.azure.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at
org.apache.iceberg.azure.shaded.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at
org.apache.iceberg.azure.shaded.io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1475)
at
org.apache.iceberg.azure.shaded.io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1338)
at
org.apache.iceberg.azure.shaded.io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1387)
at
org.apache.iceberg.azure.shaded.io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:530)
at
org.apache.iceberg.azure.shaded.io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:469)
at
org.apache.iceberg.azure.shaded.io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)
at
org.apache.iceberg.azure.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at
org.apache.iceberg.azure.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at
org.apache.iceberg.azure.shaded.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at
org.apache.iceberg.azure.shaded.io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1407)
at
org.apache.iceberg.azure.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
at
org.apache.iceberg.azure.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at
org.apache.iceberg.azure.shaded.io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:918)
at
org.apache.iceberg.azure.shaded.io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
at
org.apache.iceberg.azure.shaded.io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)
at
org.apache.iceberg.azure.shaded.io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
at
org.apache.iceberg.azure.shaded.io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
at
org.apache.iceberg.azure.shaded.io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
at
org.apache.iceberg.azure.shaded.io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:994)
at
org.apache.iceberg.azure.shaded.io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at
org.apache.iceberg.azure.shaded.io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:840)`
The reason for this seems to be:
https://github.com/apache/iceberg/blob/e5308e8412e817c072e8f08fc5f3186192dadf0f/core/src/main/java/org/apache/iceberg/SnapshotProducer.java#L473
Is there a way to make it not clean up on such failures as it would be
preferable to having to manually restore the blob files
### Willingness to contribute
- [ ] I can contribute a fix for this bug independently
- [ ] I would be willing to contribute a fix for this bug with guidance from
the Iceberg community
- [x] I cannot contribute a fix for this bug at this time
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]