You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hudi.apache.org by GitBox <gi...@apache.org> on 2022/04/19 07:25:50 UTC
[GitHub] [hudi] zhangyue19921010 opened a new pull request, #5359: [HUDI-3961] New Key Generator Option: NanoidKeyGenerator
zhangyue19921010 opened a new pull request, #5359:
URL: https://github.com/apache/hudi/pull/5359
https://issues.apache.org/jira/browse/HUDI-3916
This NanoidKeyGenerator is useful when users ingest aggregation data into hudi without unique key.
Compared with UuidKeyGenerator, nanoid may get 60% performance tuning based on https://blog.bitsrc.io/why-is-nanoid-replacing-uuid-1b5100e62ed2#:~:text=NanoID%20is%20Only%20108%20bytes,on%20size%20of%20the%20data.
Here is the record example for UuidKeyGenerator which _hoodie_record_key is `23a1b150-70d3-4bc3-9960-d2fca503e20c`
```
+-------------------+---------------------+------------------------------------+----------------------+--------------------------------------------------------------------------+---+----+-----+----+----------+
|_hoodie_commit_time|_hoodie_commit_seqno |_hoodie_record_key |_hoodie_partition_path|_hoodie_file_name |id |name|value|ts |dt |
+-------------------+---------------------+------------------------------------+----------------------+--------------------------------------------------------------------------+---+----+-----+----+----------+
|20220419151435454 |20220419151435454_0_1|23a1b150-70d3-4bc3-9960-d2fca503e20c|2021-10-16 |a1832b18-159b-482c-9391-39b1c4be1dc7-0_0-34-1617_20220419151435454.parquet|1 |a1 |10 |1000|2021-10-16|
+-------------------+---------------------+------------------------------------+----------------------+--------------------------------------------------------------------------+---+----+-----+----+----------+
```
Here is the record example for NanoidKeyGenerator which _hoodie_record_key is `OcZ_9Rn8wLpIc7W1sHGOL`
```
+-------------------+---------------------+---------------------+----------------------+--------------------------------------------------------------------------+---+----+-----+----+----------+
|_hoodie_commit_time|_hoodie_commit_seqno |_hoodie_record_key |_hoodie_partition_path|_hoodie_file_name |id |name|value|ts |dt |
+-------------------+---------------------+---------------------+----------------------+--------------------------------------------------------------------------+---+----+-----+----+----------+
|20220419150944483 |20220419150944483_0_1|OcZ_9Rn8wLpIc7W1sHGOL|2021-10-16 |01183dc0-7121-479d-8e30-030838236b51-0_0-34-1617_20220419150944483.parquet|1 |a1 |10 |1000|2021-10-16|
+-------------------+---------------------+---------------------+----------------------+--------------------------------------------------------------------------+---+----+-----+----+----------+
```
## What is the purpose of the pull request
*(For example: This pull request adds quick-start document.)*
## Brief change log
*(for example:)*
- *Modify AnnotationLocation checkstyle rule in checkstyle.xml*
## Verify this pull request
*(Please pick either of the following options)*
This pull request is a trivial rework / code cleanup without any test coverage.
*(or)*
This pull request is already covered by existing tests, such as *(please describe tests)*.
(or)
This change added tests and can be verified as follows:
*(example:)*
- *Added integration tests for end-to-end.*
- *Added HoodieClientWriteTest to verify the change.*
- *Manually verified the change by running a job locally.*
## Committer checklist
- [ ] Has a corresponding JIRA in PR title & commit
- [ ] Commit message is descriptive of the change
- [ ] CI is green
- [ ] Necessary doc changes done or have another open PR
- [ ] For large changes, please consider breaking it into sub-tasks under an umbrella JIRA.
--
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] zhangyue19921010 commented on pull request #5359: [HUDI-3961] New Key Generator Option: NanoidKeyGenerator
Posted by GitBox <gi...@apache.org>.
zhangyue19921010 commented on PR #5359:
URL: https://github.com/apache/hudi/pull/5359#issuecomment-1107853804
Sure thing. Will add benchmark ASAP Thanks for your attention :)
--
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] zhangyue19921010 commented on pull request #5359: [HUDI-3961] New Key Generator Option: NanoidKeyGenerator
Posted by GitBox <gi...@apache.org>.
zhangyue19921010 commented on PR #5359:
URL: https://github.com/apache/hudi/pull/5359#issuecomment-1102395288
@hudi-bot run azure
--
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 #5359: [HUDI-3961] New Key Generator Option: NanoidKeyGenerator
Posted by GitBox <gi...@apache.org>.
hudi-bot commented on PR #5359:
URL: https://github.com/apache/hudi/pull/5359#issuecomment-1102250676
<!--
Meta data
{
"version" : 1,
"metaDataEntries" : [ {
"hash" : "287a959ff3e828c539422a7450da09e023028486",
"status" : "CANCELED",
"url" : "https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=8136",
"triggerID" : "287a959ff3e828c539422a7450da09e023028486",
"triggerType" : "PUSH"
} ]
}-->
## CI report:
* 287a959ff3e828c539422a7450da09e023028486 Azure: [CANCELED](https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=8136)
<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 #5359: [HUDI-3961] New Key Generator Option: NanoidKeyGenerator
Posted by GitBox <gi...@apache.org>.
hudi-bot commented on PR #5359:
URL: https://github.com/apache/hudi/pull/5359#issuecomment-1102393502
<!--
Meta data
{
"version" : 1,
"metaDataEntries" : [ {
"hash" : "287a959ff3e828c539422a7450da09e023028486",
"status" : "CANCELED",
"url" : "https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=8136",
"triggerID" : "287a959ff3e828c539422a7450da09e023028486",
"triggerType" : "PUSH"
}, {
"hash" : "287a959ff3e828c539422a7450da09e023028486",
"status" : "FAILURE",
"url" : "https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=8137",
"triggerID" : "1102258674",
"triggerType" : "MANUAL"
} ]
}-->
## CI report:
* 287a959ff3e828c539422a7450da09e023028486 Azure: [CANCELED](https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=8136) Azure: [FAILURE](https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=8137)
<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] zhangyue19921010 commented on pull request #5359: [HUDI-3916] New Key Generator Option: NanoidKeyGenerator
Posted by GitBox <gi...@apache.org>.
zhangyue19921010 commented on PR #5359:
URL: https://github.com/apache/hudi/pull/5359#issuecomment-1373406693
> @zhangyue19921010 Are you still working on this? Do you need any assistance from the community?
oooh almost forget this PR Orz... Sorry for that. Will add a benchmark asap.
thanks for your reminding! @pratyakshsharma
--
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] pratyakshsharma commented on pull request #5359: [HUDI-3961] New Key Generator Option: NanoidKeyGenerator
Posted by GitBox <gi...@apache.org>.
pratyakshsharma commented on PR #5359:
URL: https://github.com/apache/hudi/pull/5359#issuecomment-1120229442
Will take pass once needful is taken care of.
--
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 #5359: [HUDI-3961] New Key Generator Option: NanoidKeyGenerator
Posted by GitBox <gi...@apache.org>.
hudi-bot commented on PR #5359:
URL: https://github.com/apache/hudi/pull/5359#issuecomment-1102204495
<!--
Meta data
{
"version" : 1,
"metaDataEntries" : [ {
"hash" : "287a959ff3e828c539422a7450da09e023028486",
"status" : "PENDING",
"url" : "https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=8136",
"triggerID" : "287a959ff3e828c539422a7450da09e023028486",
"triggerType" : "PUSH"
} ]
}-->
## CI report:
* 287a959ff3e828c539422a7450da09e023028486 Azure: [PENDING](https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=8136)
<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 #5359: [HUDI-3961] New Key Generator Option: NanoidKeyGenerator
Posted by GitBox <gi...@apache.org>.
hudi-bot commented on PR #5359:
URL: https://github.com/apache/hudi/pull/5359#issuecomment-1102260252
<!--
Meta data
{
"version" : 1,
"metaDataEntries" : [ {
"hash" : "287a959ff3e828c539422a7450da09e023028486",
"status" : "CANCELED",
"url" : "https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=8136",
"triggerID" : "287a959ff3e828c539422a7450da09e023028486",
"triggerType" : "PUSH"
}, {
"hash" : "287a959ff3e828c539422a7450da09e023028486",
"status" : "PENDING",
"url" : "https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=8137",
"triggerID" : "1102258674",
"triggerType" : "MANUAL"
} ]
}-->
## CI report:
* 287a959ff3e828c539422a7450da09e023028486 Azure: [CANCELED](https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=8136) Azure: [PENDING](https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=8137)
<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 #5359: [HUDI-3961] New Key Generator Option: NanoidKeyGenerator
Posted by GitBox <gi...@apache.org>.
hudi-bot commented on PR #5359:
URL: https://github.com/apache/hudi/pull/5359#issuecomment-1102509627
<!--
Meta data
{
"version" : 1,
"metaDataEntries" : [ {
"hash" : "287a959ff3e828c539422a7450da09e023028486",
"status" : "CANCELED",
"url" : "https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=8136",
"triggerID" : "287a959ff3e828c539422a7450da09e023028486",
"triggerType" : "PUSH"
}, {
"hash" : "287a959ff3e828c539422a7450da09e023028486",
"status" : "FAILURE",
"url" : "https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=8137",
"triggerID" : "1102258674",
"triggerType" : "MANUAL"
}, {
"hash" : "287a959ff3e828c539422a7450da09e023028486",
"status" : "SUCCESS",
"url" : "https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=8138",
"triggerID" : "1102395288",
"triggerType" : "MANUAL"
} ]
}-->
## CI report:
* 287a959ff3e828c539422a7450da09e023028486 Azure: [CANCELED](https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=8136) Azure: [FAILURE](https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=8137) Azure: [SUCCESS](https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=8138)
<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] KnightChess commented on a diff in pull request #5359: [HUDI-3961] New Key Generator Option: NanoidKeyGenerator
Posted by GitBox <gi...@apache.org>.
KnightChess commented on code in PR #5359:
URL: https://github.com/apache/hudi/pull/5359#discussion_r853201697
##########
hudi-spark-datasource/hudi-spark/pom.xml:
##########
@@ -434,6 +434,12 @@
<version>${zk-curator.version}</version>
</dependency>
+ <dependency>
+ <groupId>com.aventrix.jnanoid</groupId>
+ <artifactId>jnanoid</artifactId>
+ <version>2.0.0</version>
Review Comment:
nit
##########
hudi-spark-datasource/hudi-spark/src/test/scala/org/apache/hudi/TestHoodieSparkSqlWriter.scala:
##########
@@ -1017,6 +1017,48 @@ class TestHoodieSparkSqlWriter {
}
}
+ @Test
+ def testUuidKeyGen(): Unit = {
+ try {
+ val _spark = spark
+ import _spark.implicits._
+ val df = Seq((1, "a1", 10, 1000, "2021-10-16")).toDF("id", "name", "value", "ts", "dt")
+ val options = Map(
+ DataSourceWriteOptions.PRECOMBINE_FIELD.key -> "ts",
+ DataSourceWriteOptions.PARTITIONPATH_FIELD.key -> "dt")
+ val (tableName1, tablePath1) = ("hoodie_test_params_1", s"$tempBasePath" + "_1")
+
+ df.write.format("hudi")
+ .options(options)
+ .option(HoodieWriteConfig.TBL_NAME.key, tableName1)
+ .option(HoodieWriteConfig.KEYGENERATOR_CLASS_NAME.key, classOf[UuidKeyGenerator].getName)
+ .mode(SaveMode.Overwrite).save(tablePath1)
+ } catch {
+ case _ => fail("Failing when using UUIDKeyGenerator.");
+ }
+ }
+
+ @Test
+ def testNanoIdKeyGen(): Unit = {
+ try {
+ val _spark = spark
+ import _spark.implicits._
+ val df = Seq((1, "a1", 10, 1000, "2021-10-16")).toDF("id", "name", "value", "ts", "dt")
+ val options = Map(
+ DataSourceWriteOptions.PRECOMBINE_FIELD.key -> "ts",
+ DataSourceWriteOptions.PARTITIONPATH_FIELD.key -> "dt")
+ val (tableName1, tablePath1) = ("hoodie_test_params_1", s"$tempBasePath" + "_1")
+
+ df.write.format("hudi")
+ .options(options)
+ .option(HoodieWriteConfig.TBL_NAME.key, tableName1)
+ .option(HoodieWriteConfig.KEYGENERATOR_CLASS_NAME.key, classOf[NanoidKeyGenerator].getName)
+ .mode(SaveMode.Overwrite).save(tablePath1)
+ } catch {
+ case _ => fail("Failing when using UUIDKeyGenerator.");
Review Comment:
nit: NanoId
--
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] zhangyue19921010 commented on pull request #5359: [HUDI-3961] New Key Generator Option: NanoidKeyGenerator
Posted by GitBox <gi...@apache.org>.
zhangyue19921010 commented on PR #5359:
URL: https://github.com/apache/hudi/pull/5359#issuecomment-1102258674
@hudi-bot run azure
--
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] XuQianJin-Stars commented on pull request #5359: [HUDI-3961] New Key Generator Option: NanoidKeyGenerator
Posted by GitBox <gi...@apache.org>.
XuQianJin-Stars commented on PR #5359:
URL: https://github.com/apache/hudi/pull/5359#issuecomment-1104803864
@zhangyue19921010 LGTM, It would be better if you can add a hudi's benchmark for comparison.
--
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] pratyakshsharma commented on pull request #5359: [HUDI-3916] New Key Generator Option: NanoidKeyGenerator
Posted by GitBox <gi...@apache.org>.
pratyakshsharma commented on PR #5359:
URL: https://github.com/apache/hudi/pull/5359#issuecomment-1371287526
@zhangyue19921010 Are you still working on this? Do you need any assistance from the community?
--
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 #5359: [HUDI-3961] New Key Generator Option: NanoidKeyGenerator
Posted by GitBox <gi...@apache.org>.
hudi-bot commented on PR #5359:
URL: https://github.com/apache/hudi/pull/5359#issuecomment-1102398100
<!--
Meta data
{
"version" : 1,
"metaDataEntries" : [ {
"hash" : "287a959ff3e828c539422a7450da09e023028486",
"status" : "CANCELED",
"url" : "https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=8136",
"triggerID" : "287a959ff3e828c539422a7450da09e023028486",
"triggerType" : "PUSH"
}, {
"hash" : "287a959ff3e828c539422a7450da09e023028486",
"status" : "FAILURE",
"url" : "https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=8137",
"triggerID" : "1102258674",
"triggerType" : "MANUAL"
}, {
"hash" : "287a959ff3e828c539422a7450da09e023028486",
"status" : "PENDING",
"url" : "https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=8138",
"triggerID" : "1102395288",
"triggerType" : "MANUAL"
} ]
}-->
## CI report:
* 287a959ff3e828c539422a7450da09e023028486 Azure: [CANCELED](https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=8136) Azure: [FAILURE](https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=8137) Azure: [PENDING](https://dev.azure.com/apache-hudi-ci-org/785b6ef4-2f42-4a89-8f0e-5f0d7039a0cc/_build/results?buildId=8138)
<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 #5359: [HUDI-3961] New Key Generator Option: NanoidKeyGenerator
Posted by GitBox <gi...@apache.org>.
hudi-bot commented on PR #5359:
URL: https://github.com/apache/hudi/pull/5359#issuecomment-1102199521
<!--
Meta data
{
"version" : 1,
"metaDataEntries" : [ {
"hash" : "287a959ff3e828c539422a7450da09e023028486",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "287a959ff3e828c539422a7450da09e023028486",
"triggerType" : "PUSH"
} ]
}-->
## CI report:
* 287a959ff3e828c539422a7450da09e023028486 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