You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hudi.apache.org by "jonvex (via GitHub)" <gi...@apache.org> on 2023/09/20 15:41:10 UTC
[GitHub] [hudi] jonvex opened a new pull request, #9755: [HUDI-6882] Differentiate between replacecommits in cluster planning
jonvex opened a new pull request, #9755:
URL: https://github.com/apache/hudi/pull/9755
### Change Logs
Cluster planning will run clustering every n commits. To do this, it gets the previous clustering instant and then finds the number of commits after that. However, it was finding the previous clustering instant just by finding the latest replacecommit. Replacecommit is also used for insert_overwrite. Now we check the commit metadata to ensure it is a cluster commit.
### Impact
clustering now works as expected if lots of insert_overwrite is used
### Risk level (write none, low medium or high below)
low
### Documentation Update
N/A
### Contributor's checklist
- [ ] Read through [contributor's guide](https://hudi.apache.org/contribute/how-to-contribute)
- [ ] Change Logs and Impact were stated clearly
- [ ] Adequate tests were added if applicable
- [ ] CI passed
--
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: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [hudi] hudi-bot commented on pull request #9755: [HUDI-6882] Differentiate between replacecommits in cluster planning
Posted by "hudi-bot (via GitHub)" <gi...@apache.org>.
hudi-bot commented on PR #9755:
URL: https://github.com/apache/hudi/pull/9755#issuecomment-1728192477
<!--
Meta data
{
"version" : 1,
"metaDataEntries" : [ {
"hash" : "b473aa490f148ca46aea7d9039d64512af73780d",
"status" : "CANCELED",
"url" : "https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=20053",
"triggerID" : "b473aa490f148ca46aea7d9039d64512af73780d",
"triggerType" : "PUSH"
}, {
"hash" : "b9218ae8bfc941b5bdb7796436fd905871420000",
"status" : "PENDING",
"url" : "https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=20054",
"triggerID" : "b9218ae8bfc941b5bdb7796436fd905871420000",
"triggerType" : "PUSH"
} ]
}-->
## CI report:
* b473aa490f148ca46aea7d9039d64512af73780d Azure: [CANCELED](https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=20053)
* b9218ae8bfc941b5bdb7796436fd905871420000 Azure: [PENDING](https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=20054)
<details>
<summary>Bot commands</summary>
@hudi-bot supports the following commands:
- `@hudi-bot run azure` re-run the last Azure build
</details>
--
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: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [hudi] hudi-bot commented on pull request #9755: [HUDI-6882] Differentiate between replacecommits in cluster planning
Posted by "hudi-bot (via GitHub)" <gi...@apache.org>.
hudi-bot commented on PR #9755:
URL: https://github.com/apache/hudi/pull/9755#issuecomment-1728040765
<!--
Meta data
{
"version" : 1,
"metaDataEntries" : [ {
"hash" : "b473aa490f148ca46aea7d9039d64512af73780d",
"status" : "PENDING",
"url" : "https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=20053",
"triggerID" : "b473aa490f148ca46aea7d9039d64512af73780d",
"triggerType" : "PUSH"
} ]
}-->
## CI report:
* b473aa490f148ca46aea7d9039d64512af73780d Azure: [PENDING](https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=20053)
<details>
<summary>Bot commands</summary>
@hudi-bot supports the following commands:
- `@hudi-bot run azure` re-run the last Azure build
</details>
--
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: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [hudi] yihua merged pull request #9755: [HUDI-6882] Differentiate between replacecommits in cluster planning
Posted by "yihua (via GitHub)" <gi...@apache.org>.
yihua merged PR #9755:
URL: https://github.com/apache/hudi/pull/9755
--
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: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [hudi] hudi-bot commented on pull request #9755: [HUDI-6882] Differentiate between replacecommits in cluster planning
Posted by "hudi-bot (via GitHub)" <gi...@apache.org>.
hudi-bot commented on PR #9755:
URL: https://github.com/apache/hudi/pull/9755#issuecomment-1728359715
<!--
Meta data
{
"version" : 1,
"metaDataEntries" : [ {
"hash" : "b473aa490f148ca46aea7d9039d64512af73780d",
"status" : "DELETED",
"url" : "https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=20053",
"triggerID" : "b473aa490f148ca46aea7d9039d64512af73780d",
"triggerType" : "PUSH"
}, {
"hash" : "b9218ae8bfc941b5bdb7796436fd905871420000",
"status" : "FAILURE",
"url" : "https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=20054",
"triggerID" : "b9218ae8bfc941b5bdb7796436fd905871420000",
"triggerType" : "PUSH"
} ]
}-->
## CI report:
* b9218ae8bfc941b5bdb7796436fd905871420000 Azure: [FAILURE](https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=20054)
<details>
<summary>Bot commands</summary>
@hudi-bot supports the following commands:
- `@hudi-bot run azure` re-run the last Azure build
</details>
--
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: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [hudi] yihua commented on a diff in pull request #9755: [HUDI-6882] Differentiate between replacecommits in cluster planning
Posted by "yihua (via GitHub)" <gi...@apache.org>.
yihua commented on code in PR #9755:
URL: https://github.com/apache/hudi/pull/9755#discussion_r1331923138
##########
hudi-spark-datasource/hudi-spark/src/test/scala/org/apache/hudi/functional/TestCOWDataSource.scala:
##########
@@ -1724,6 +1724,54 @@ class TestCOWDataSource extends HoodieSparkClientTestBase with ScalaAssertionSup
val metadata = TimelineUtils.getCommitMetadata(latestCommit.get(), timeline)
metadata.getOperationType.equals(WriteOperationType.UPSERT)
}
+
+ @ParameterizedTest
+ @EnumSource(value = classOf[HoodieRecordType], names = Array("AVRO", "SPARK"))
+ def testInsertOverwriteCluster(recordType: HoodieRecordType): Unit = {
+ val (writeOpts, _) = getWriterReaderOpts(recordType)
+
+ // Insert Operation
+ val records = recordsToStrings(dataGen.generateInserts("000", 100)).toList
+ val inputDF = spark.read.json(spark.sparkContext.parallelize(records, 2))
+
+ val optsWithCluster = Map(
+ INLINE_CLUSTERING_ENABLE.key() -> "true",
+ "hoodie.clustering.inline.max.commits" -> "2",
+ "hoodie.clustering.plan.strategy.sort.columns" -> "_row_key",
+ "hoodie.insert.shuffle.parallelism" -> "4",
+ "hoodie.upsert.shuffle.parallelism" -> "4",
+ DataSourceWriteOptions.RECORDKEY_FIELD.key -> "_row_key",
+ DataSourceWriteOptions.PARTITIONPATH_FIELD.key -> "partition",
+ HoodieWriteConfig.TBL_NAME.key -> "hoodie_test"
+ ) ++ writeOpts
+ inputDF.write.format("hudi")
+ .options(optsWithCluster)
+ .option(DataSourceWriteOptions.OPERATION.key, DataSourceWriteOptions.INSERT_OPERATION_OPT_VAL)
+ .mode(SaveMode.Overwrite)
+ .save(basePath)
+
+ for (i <- 1 until 6) {
+ val records = recordsToStrings(dataGen.generateInsertsForPartition("00" + i, 10, HoodieTestDataGenerator.DEFAULT_FIRST_PARTITION_PATH)).toList
+ val inputDF = spark.read.json(spark.sparkContext.parallelize(records, 2))
+ inputDF.write.format("hudi")
+ .options(optsWithCluster)
+ .option(DataSourceWriteOptions.OPERATION.key, DataSourceWriteOptions.INSERT_OVERWRITE_OPERATION_OPT_VAL)
+ .mode(SaveMode.Append)
+ .save(basePath)
+ }
+
+ val metaClient = HoodieTableMetaClient.builder()
+ .setBasePath(basePath)
+ .setConf(hadoopConf)
+ .build()
+ val timeline = metaClient.getActiveTimeline
+ val instants = timeline.getAllCommitsTimeline.filterCompletedInstants.getInstants
+ assertEquals(9, instants.size)
Review Comment:
nit: add assertion on the number of replacecommits which should be 8?
##########
hudi-spark-datasource/hudi-spark/src/test/scala/org/apache/hudi/functional/TestCOWDataSource.scala:
##########
@@ -1724,6 +1724,54 @@ class TestCOWDataSource extends HoodieSparkClientTestBase with ScalaAssertionSup
val metadata = TimelineUtils.getCommitMetadata(latestCommit.get(), timeline)
metadata.getOperationType.equals(WriteOperationType.UPSERT)
}
+
+ @ParameterizedTest
+ @EnumSource(value = classOf[HoodieRecordType], names = Array("AVRO", "SPARK"))
+ def testInsertOverwriteCluster(recordType: HoodieRecordType): Unit = {
+ val (writeOpts, _) = getWriterReaderOpts(recordType)
+
+ // Insert Operation
+ val records = recordsToStrings(dataGen.generateInserts("000", 100)).toList
+ val inputDF = spark.read.json(spark.sparkContext.parallelize(records, 2))
+
+ val optsWithCluster = Map(
+ INLINE_CLUSTERING_ENABLE.key() -> "true",
+ "hoodie.clustering.inline.max.commits" -> "2",
+ "hoodie.clustering.plan.strategy.sort.columns" -> "_row_key",
+ "hoodie.insert.shuffle.parallelism" -> "4",
+ "hoodie.upsert.shuffle.parallelism" -> "4",
+ DataSourceWriteOptions.RECORDKEY_FIELD.key -> "_row_key",
+ DataSourceWriteOptions.PARTITIONPATH_FIELD.key -> "partition",
+ HoodieWriteConfig.TBL_NAME.key -> "hoodie_test"
+ ) ++ writeOpts
+ inputDF.write.format("hudi")
+ .options(optsWithCluster)
+ .option(DataSourceWriteOptions.OPERATION.key, DataSourceWriteOptions.INSERT_OPERATION_OPT_VAL)
+ .mode(SaveMode.Overwrite)
+ .save(basePath)
+
+ for (i <- 1 until 6) {
+ val records = recordsToStrings(dataGen.generateInsertsForPartition("00" + i, 10, HoodieTestDataGenerator.DEFAULT_FIRST_PARTITION_PATH)).toList
+ val inputDF = spark.read.json(spark.sparkContext.parallelize(records, 2))
+ inputDF.write.format("hudi")
+ .options(optsWithCluster)
+ .option(DataSourceWriteOptions.OPERATION.key, DataSourceWriteOptions.INSERT_OVERWRITE_OPERATION_OPT_VAL)
+ .mode(SaveMode.Append)
+ .save(basePath)
+ }
+
+ val metaClient = HoodieTableMetaClient.builder()
+ .setBasePath(basePath)
+ .setConf(hadoopConf)
+ .build()
+ val timeline = metaClient.getActiveTimeline
+ val instants = timeline.getAllCommitsTimeline.filterCompletedInstants.getInstants
+ assertEquals(9, instants.size)
+ val compactionInstants = instants.filter(i => {
Review Comment:
nit: `compactionInstants` -> `clusteringInstants`
--
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: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [hudi] hudi-bot commented on pull request #9755: [HUDI-6882] Differentiate between replacecommits in cluster planning
Posted by "hudi-bot (via GitHub)" <gi...@apache.org>.
hudi-bot commented on PR #9755:
URL: https://github.com/apache/hudi/pull/9755#issuecomment-1728009347
<!--
Meta data
{
"version" : 1,
"metaDataEntries" : [ {
"hash" : "b473aa490f148ca46aea7d9039d64512af73780d",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "b473aa490f148ca46aea7d9039d64512af73780d",
"triggerType" : "PUSH"
} ]
}-->
## CI report:
* b473aa490f148ca46aea7d9039d64512af73780d UNKNOWN
<details>
<summary>Bot commands</summary>
@hudi-bot supports the following commands:
- `@hudi-bot run azure` re-run the last Azure build
</details>
--
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: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [hudi] hudi-bot commented on pull request #9755: [HUDI-6882] Differentiate between replacecommits in cluster planning
Posted by "hudi-bot (via GitHub)" <gi...@apache.org>.
hudi-bot commented on PR #9755:
URL: https://github.com/apache/hudi/pull/9755#issuecomment-1729784958
<!--
Meta data
{
"version" : 1,
"metaDataEntries" : [ {
"hash" : "b473aa490f148ca46aea7d9039d64512af73780d",
"status" : "DELETED",
"url" : "https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=20053",
"triggerID" : "b473aa490f148ca46aea7d9039d64512af73780d",
"triggerType" : "PUSH"
}, {
"hash" : "b9218ae8bfc941b5bdb7796436fd905871420000",
"status" : "FAILURE",
"url" : "https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=20054",
"triggerID" : "b9218ae8bfc941b5bdb7796436fd905871420000",
"triggerType" : "PUSH"
}, {
"hash" : "0d495d33024117185684d209afc9429346a6507d",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "0d495d33024117185684d209afc9429346a6507d",
"triggerType" : "PUSH"
} ]
}-->
## CI report:
* b9218ae8bfc941b5bdb7796436fd905871420000 Azure: [FAILURE](https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=20054)
* 0d495d33024117185684d209afc9429346a6507d UNKNOWN
<details>
<summary>Bot commands</summary>
@hudi-bot supports the following commands:
- `@hudi-bot run azure` re-run the last Azure build
</details>
--
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: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [hudi] hudi-bot commented on pull request #9755: [HUDI-6882] Differentiate between replacecommits in cluster planning
Posted by "hudi-bot (via GitHub)" <gi...@apache.org>.
hudi-bot commented on PR #9755:
URL: https://github.com/apache/hudi/pull/9755#issuecomment-1728132870
<!--
Meta data
{
"version" : 1,
"metaDataEntries" : [ {
"hash" : "b473aa490f148ca46aea7d9039d64512af73780d",
"status" : "PENDING",
"url" : "https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=20053",
"triggerID" : "b473aa490f148ca46aea7d9039d64512af73780d",
"triggerType" : "PUSH"
}, {
"hash" : "b9218ae8bfc941b5bdb7796436fd905871420000",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "b9218ae8bfc941b5bdb7796436fd905871420000",
"triggerType" : "PUSH"
} ]
}-->
## CI report:
* b473aa490f148ca46aea7d9039d64512af73780d Azure: [PENDING](https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=20053)
* b9218ae8bfc941b5bdb7796436fd905871420000 UNKNOWN
<details>
<summary>Bot commands</summary>
@hudi-bot supports the following commands:
- `@hudi-bot run azure` re-run the last Azure build
</details>
--
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: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [hudi] hudi-bot commented on pull request #9755: [HUDI-6882] Differentiate between replacecommits in cluster planning
Posted by "hudi-bot (via GitHub)" <gi...@apache.org>.
hudi-bot commented on PR #9755:
URL: https://github.com/apache/hudi/pull/9755#issuecomment-1730052910
<!--
Meta data
{
"version" : 1,
"metaDataEntries" : [ {
"hash" : "b473aa490f148ca46aea7d9039d64512af73780d",
"status" : "DELETED",
"url" : "https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=20053",
"triggerID" : "b473aa490f148ca46aea7d9039d64512af73780d",
"triggerType" : "PUSH"
}, {
"hash" : "b9218ae8bfc941b5bdb7796436fd905871420000",
"status" : "DELETED",
"url" : "https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=20054",
"triggerID" : "b9218ae8bfc941b5bdb7796436fd905871420000",
"triggerType" : "PUSH"
}, {
"hash" : "0d495d33024117185684d209afc9429346a6507d",
"status" : "SUCCESS",
"url" : "https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=20069",
"triggerID" : "0d495d33024117185684d209afc9429346a6507d",
"triggerType" : "PUSH"
} ]
}-->
## CI report:
* 0d495d33024117185684d209afc9429346a6507d Azure: [SUCCESS](https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=20069)
<details>
<summary>Bot commands</summary>
@hudi-bot supports the following commands:
- `@hudi-bot run azure` re-run the last Azure build
</details>
--
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: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] [HUDI-6882] Differentiate between replacecommits in cluster planning [hudi]
Posted by "yihua (via GitHub)" <gi...@apache.org>.
yihua commented on code in PR #9755:
URL: https://github.com/apache/hudi/pull/9755#discussion_r1535961867
##########
hudi-common/src/main/java/org/apache/hudi/common/table/timeline/HoodieDefaultTimeline.java:
##########
@@ -490,6 +493,19 @@ public Option<HoodieInstant> getFirstNonSavepointCommit() {
}
return firstNonSavepointCommit;
}
+
+ public Option<HoodieInstant> getLastClusterCommit() {
+ return Option.fromJavaOptional(getCommitsTimeline().filter(s -> s.getAction().equalsIgnoreCase(HoodieTimeline.REPLACE_COMMIT_ACTION))
+ .getReverseOrderedInstants()
+ .filter(i -> {
+ try {
+ HoodieCommitMetadata metadata = TimelineUtils.getCommitMetadata(i, this);
Review Comment:
This introduced a regression that the pending clustering is no longer considered when figuring out the `lastClusteringInstant`.
--
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: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [hudi] hudi-bot commented on pull request #9755: [HUDI-6882] Differentiate between replacecommits in cluster planning
Posted by "hudi-bot (via GitHub)" <gi...@apache.org>.
hudi-bot commented on PR #9755:
URL: https://github.com/apache/hudi/pull/9755#issuecomment-1729860325
<!--
Meta data
{
"version" : 1,
"metaDataEntries" : [ {
"hash" : "b473aa490f148ca46aea7d9039d64512af73780d",
"status" : "DELETED",
"url" : "https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=20053",
"triggerID" : "b473aa490f148ca46aea7d9039d64512af73780d",
"triggerType" : "PUSH"
}, {
"hash" : "b9218ae8bfc941b5bdb7796436fd905871420000",
"status" : "FAILURE",
"url" : "https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=20054",
"triggerID" : "b9218ae8bfc941b5bdb7796436fd905871420000",
"triggerType" : "PUSH"
}, {
"hash" : "0d495d33024117185684d209afc9429346a6507d",
"status" : "PENDING",
"url" : "https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=20069",
"triggerID" : "0d495d33024117185684d209afc9429346a6507d",
"triggerType" : "PUSH"
} ]
}-->
## CI report:
* b9218ae8bfc941b5bdb7796436fd905871420000 Azure: [FAILURE](https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=20054)
* 0d495d33024117185684d209afc9429346a6507d Azure: [PENDING](https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=20069)
<details>
<summary>Bot commands</summary>
@hudi-bot supports the following commands:
- `@hudi-bot run azure` re-run the last Azure build
</details>
--
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: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org