pvary commented on code in PR #5036:
URL: https://github.com/apache/iceberg/pull/5036#discussion_r898838334
##########
hive-metastore/src/main/java/org/apache/iceberg/hive/HiveTableOperations.java:
##########
@@ -631,4 +647,40 @@ private static boolean hiveEngineEnabled(TableMetadata
metadata, Configuration c
return conf.getBoolean(ConfigProperties.ENGINE_HIVE_ENABLED,
TableProperties.ENGINE_HIVE_ENABLED_DEFAULT);
}
+
+ private static class HiveLockHeartbeat implements Runnable {
+ private final ClientPool<IMetaStoreClient, TException> hmsClients;
+ private final long lockId;
+ private final long intervalMs;
+ private ScheduledFuture<?> future;
+
+ HiveLockHeartbeat(ClientPool<IMetaStoreClient, TException> hmsClients,
long lockId, long intervalMs) {
+ this.hmsClients = hmsClients;
+ this.lockId = lockId;
+ this.intervalMs = intervalMs;
+ this.future = null;
+ }
+
+ @Override
+ public void run() {
+ try {
+ hmsClients.run(client -> {
+ client.heartbeat(0, lockId);
+ return null;
+ });
+ } catch (TException | InterruptedException e) {
+ LOG.error("Fail to heartbeat for lock: {}", lockId, e);
Review Comment:
Not sure about this, but I am thinking about the situation where we find
that the heartbeat is failed.
Shall we make sure that the `persistTable` is not called, and return a
`CommitFailedException`?
Similarly - as you have already mentioned - we might want to throw a
`CommitStateUnknownException` if the unlock has failed. This is a little bit
different, because the metastore_location might be set as the current
transaction expects, but some concurrent transactions change might be lost in
the meantime.
--
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]