pvary commented on code in PR #5036:
URL: https://github.com/apache/iceberg/pull/5036#discussion_r903940545
##########
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:
@SinghAsDev: We can do some elaborate stuff to throw `CommitFailedException`
if we are before the `alter` operation, and we can throw
`CommitStateUnknownException` if we called the `alter` command already, but I
hope this would be a rare occurrence, so it might not worth the extra
complexity. The question is how we will be able to communicate back to the
original thread that the heartbeat is failed. Based on this the decision above
could be an easy one, or a more complex one, and then we can decide which one
to chose.
--
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]