Re: [PR] KAFKA-16287: Implement example tests for common rebalance callback [kafka]
lucasbru merged PR #15408: URL: https://github.com/apache/kafka/pull/15408 -- 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: jira-unsubscr...@kafka.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org
Re: [PR] KAFKA-16287: Implement example tests for common rebalance callback [kafka]
lianetm commented on PR #15408: URL: https://github.com/apache/kafka/pull/15408#issuecomment-2100868214 This LGTM @cadonna , left comment above discarding one of my messages, the test is clear enough. Only [this](https://github.com/apache/kafka/pull/15408#discussion_r1591300734) other nit above about the test class description but I'll bring changes in the file soon after this goes in so ok to merge and I can improve it later. -- 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: jira-unsubscr...@kafka.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org
Re: [PR] KAFKA-16287: Implement example tests for common rebalance callback [kafka]
lianetm commented on code in PR #15408: URL: https://github.com/apache/kafka/pull/15408#discussion_r1591377324 ## core/src/test/scala/integration/kafka/api/PlaintextConsumerCallbackTest.scala: ## @@ -0,0 +1,138 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE + * file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file + * to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ +package integration.kafka.api + +import kafka.api.{AbstractConsumerTest, BaseConsumerTest} +import kafka.utils.{TestInfoUtils, TestUtils} +import org.apache.kafka.clients.consumer.{Consumer, ConsumerRebalanceListener} +import org.apache.kafka.common.TopicPartition +import org.junit.jupiter.api.Assertions.{assertEquals, assertThrows, assertTrue} +import org.junit.jupiter.params.ParameterizedTest +import org.junit.jupiter.params.provider.{Arguments, MethodSource} + +import java.util +import java.util.Arrays.asList +import java.util.Collections +import java.util.concurrent.atomic.AtomicBoolean +import java.util.stream.Stream + +/** + * Integration tests for the consumer that cover interaction with the consumer from within callbacks + * and listeners. + */ +class PlaintextConsumerCallbackTest extends AbstractConsumerTest { + + @ParameterizedTest(name = TestInfoUtils.TestWithParameterizedQuorumAndGroupProtocolNames) + @MethodSource(Array("getTestQuorumAndGroupProtocolParametersAll")) + def testConsumerRebalanceListenerAssignOnPartitionsAssigned(quorum: String, groupProtocol: String): Unit = { +val tp = new TopicPartition(topic, 0); +triggerOnPartitionsAssigned { (consumer, _) => + val e: Exception = assertThrows(classOf[IllegalStateException], () => consumer.assign(Collections.singletonList(tp))) + assertEquals(e.getMessage, "Subscription to topics, partitions and pattern are mutually exclusive") +} + } + + @ParameterizedTest(name = TestInfoUtils.TestWithParameterizedQuorumAndGroupProtocolNames) + @MethodSource(Array("getTestQuorumAndGroupProtocolParametersAll")) + def testConsumerRebalanceListenerAssignmentOnPartitionsAssigned(quorum: String, groupProtocol: String): Unit = { +val tp = new TopicPartition(topic, 0); +triggerOnPartitionsAssigned { (consumer, _) => + assertTrue(consumer.assignment().contains(tp)); +} + } + + @ParameterizedTest(name = TestInfoUtils.TestWithParameterizedQuorumAndGroupProtocolNames) + @MethodSource(Array("getTestQuorumAndGroupProtocolParametersAll")) + def testConsumerRebalanceListenerBeginningOffsetsOnPartitionsAssigned(quorum: String, groupProtocol: String): Unit = { +val tp = new TopicPartition(topic, 0); +triggerOnPartitionsAssigned { (consumer, _) => + val map = consumer.beginningOffsets(Collections.singletonList(tp)) + assertTrue(map.containsKey(tp)) + assertEquals(0, map.get(tp)) +} + } + + @ParameterizedTest(name = TestInfoUtils.TestWithParameterizedQuorumAndGroupProtocolNames) + @MethodSource(Array("getTestQuorumAndGroupProtocolParametersAll")) + def testConsumerRebalanceListenerAssignOnPartitionsRevoked(quorum: String, groupProtocol: String): Unit = { +val tp = new TopicPartition(topic, 0); +triggerOnPartitionsRevoked { (consumer, _) => + val e: Exception = assertThrows(classOf[IllegalStateException], () => consumer.assign(Collections.singletonList(tp))) + assertEquals(e.getMessage, "Subscription to topics, partitions and pattern are mutually exclusive") Review Comment: ~~ditto~~ -- 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: jira-unsubscr...@kafka.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org
Re: [PR] KAFKA-16287: Implement example tests for common rebalance callback [kafka]
lianetm commented on code in PR #15408: URL: https://github.com/apache/kafka/pull/15408#discussion_r1592977058 ## core/src/test/scala/integration/kafka/api/PlaintextConsumerCallbackTest.scala: ## @@ -0,0 +1,138 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE + * file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file + * to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ +package integration.kafka.api + +import kafka.api.{AbstractConsumerTest, BaseConsumerTest} +import kafka.utils.{TestInfoUtils, TestUtils} +import org.apache.kafka.clients.consumer.{Consumer, ConsumerRebalanceListener} +import org.apache.kafka.common.TopicPartition +import org.junit.jupiter.api.Assertions.{assertEquals, assertThrows, assertTrue} +import org.junit.jupiter.params.ParameterizedTest +import org.junit.jupiter.params.provider.{Arguments, MethodSource} + +import java.util +import java.util.Arrays.asList +import java.util.Collections +import java.util.concurrent.atomic.AtomicBoolean +import java.util.stream.Stream + +/** + * Integration tests for the consumer that cover interaction with the consumer from within callbacks + * and listeners. + */ +class PlaintextConsumerCallbackTest extends AbstractConsumerTest { + + @ParameterizedTest(name = TestInfoUtils.TestWithParameterizedQuorumAndGroupProtocolNames) + @MethodSource(Array("getTestQuorumAndGroupProtocolParametersAll")) + def testConsumerRebalanceListenerAssignOnPartitionsAssigned(quorum: String, groupProtocol: String): Unit = { +val tp = new TopicPartition(topic, 0); +triggerOnPartitionsAssigned { (consumer, _) => + val e: Exception = assertThrows(classOf[IllegalStateException], () => consumer.assign(Collections.singletonList(tp))) + assertEquals(e.getMessage, "Subscription to topics, partitions and pattern are mutually exclusive") Review Comment: nop, just adding a message to the assertThrows so that the failure comes out specific to calling assign after subscribe (and then we would end up with a similar assertThrows for calling subscribe(Pattern)), but re-thinking it, it's just clear enough in case of failure since it would most probably always fail in the call to assign/subscribePattern itself. No concerns then. -- 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: jira-unsubscr...@kafka.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org
Re: [PR] KAFKA-16287: Implement example tests for common rebalance callback [kafka]
cadonna commented on code in PR #15408: URL: https://github.com/apache/kafka/pull/15408#discussion_r1592700226 ## core/src/test/scala/integration/kafka/api/PlaintextConsumerCallbackTest.scala: ## @@ -0,0 +1,138 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE + * file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file + * to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ +package integration.kafka.api + +import kafka.api.{AbstractConsumerTest, BaseConsumerTest} +import kafka.utils.{TestInfoUtils, TestUtils} +import org.apache.kafka.clients.consumer.{Consumer, ConsumerRebalanceListener} +import org.apache.kafka.common.TopicPartition +import org.junit.jupiter.api.Assertions.{assertEquals, assertThrows, assertTrue} +import org.junit.jupiter.params.ParameterizedTest +import org.junit.jupiter.params.provider.{Arguments, MethodSource} + +import java.util +import java.util.Arrays.asList +import java.util.Collections +import java.util.concurrent.atomic.AtomicBoolean +import java.util.stream.Stream + +/** + * Integration tests for the consumer that cover interaction with the consumer from within callbacks + * and listeners. + */ +class PlaintextConsumerCallbackTest extends AbstractConsumerTest { + + @ParameterizedTest(name = TestInfoUtils.TestWithParameterizedQuorumAndGroupProtocolNames) + @MethodSource(Array("getTestQuorumAndGroupProtocolParametersAll")) + def testConsumerRebalanceListenerAssignOnPartitionsAssigned(quorum: String, groupProtocol: String): Unit = { +val tp = new TopicPartition(topic, 0); +triggerOnPartitionsAssigned { (consumer, _) => + val e: Exception = assertThrows(classOf[IllegalStateException], () => consumer.assign(Collections.singletonList(tp))) + assertEquals(e.getMessage, "Subscription to topics, partitions and pattern are mutually exclusive") Review Comment: Are you proposing to change the message of the exception that is verified here? -- 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: jira-unsubscr...@kafka.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org
Re: [PR] KAFKA-16287: Implement example tests for common rebalance callback [kafka]
lianetm commented on code in PR #15408: URL: https://github.com/apache/kafka/pull/15408#discussion_r1591377324 ## core/src/test/scala/integration/kafka/api/PlaintextConsumerCallbackTest.scala: ## @@ -0,0 +1,138 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE + * file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file + * to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ +package integration.kafka.api + +import kafka.api.{AbstractConsumerTest, BaseConsumerTest} +import kafka.utils.{TestInfoUtils, TestUtils} +import org.apache.kafka.clients.consumer.{Consumer, ConsumerRebalanceListener} +import org.apache.kafka.common.TopicPartition +import org.junit.jupiter.api.Assertions.{assertEquals, assertThrows, assertTrue} +import org.junit.jupiter.params.ParameterizedTest +import org.junit.jupiter.params.provider.{Arguments, MethodSource} + +import java.util +import java.util.Arrays.asList +import java.util.Collections +import java.util.concurrent.atomic.AtomicBoolean +import java.util.stream.Stream + +/** + * Integration tests for the consumer that cover interaction with the consumer from within callbacks + * and listeners. + */ +class PlaintextConsumerCallbackTest extends AbstractConsumerTest { + + @ParameterizedTest(name = TestInfoUtils.TestWithParameterizedQuorumAndGroupProtocolNames) + @MethodSource(Array("getTestQuorumAndGroupProtocolParametersAll")) + def testConsumerRebalanceListenerAssignOnPartitionsAssigned(quorum: String, groupProtocol: String): Unit = { +val tp = new TopicPartition(topic, 0); +triggerOnPartitionsAssigned { (consumer, _) => + val e: Exception = assertThrows(classOf[IllegalStateException], () => consumer.assign(Collections.singletonList(tp))) + assertEquals(e.getMessage, "Subscription to topics, partitions and pattern are mutually exclusive") +} + } + + @ParameterizedTest(name = TestInfoUtils.TestWithParameterizedQuorumAndGroupProtocolNames) + @MethodSource(Array("getTestQuorumAndGroupProtocolParametersAll")) + def testConsumerRebalanceListenerAssignmentOnPartitionsAssigned(quorum: String, groupProtocol: String): Unit = { +val tp = new TopicPartition(topic, 0); +triggerOnPartitionsAssigned { (consumer, _) => + assertTrue(consumer.assignment().contains(tp)); +} + } + + @ParameterizedTest(name = TestInfoUtils.TestWithParameterizedQuorumAndGroupProtocolNames) + @MethodSource(Array("getTestQuorumAndGroupProtocolParametersAll")) + def testConsumerRebalanceListenerBeginningOffsetsOnPartitionsAssigned(quorum: String, groupProtocol: String): Unit = { +val tp = new TopicPartition(topic, 0); +triggerOnPartitionsAssigned { (consumer, _) => + val map = consumer.beginningOffsets(Collections.singletonList(tp)) + assertTrue(map.containsKey(tp)) + assertEquals(0, map.get(tp)) +} + } + + @ParameterizedTest(name = TestInfoUtils.TestWithParameterizedQuorumAndGroupProtocolNames) + @MethodSource(Array("getTestQuorumAndGroupProtocolParametersAll")) + def testConsumerRebalanceListenerAssignOnPartitionsRevoked(quorum: String, groupProtocol: String): Unit = { +val tp = new TopicPartition(topic, 0); +triggerOnPartitionsRevoked { (consumer, _) => + val e: Exception = assertThrows(classOf[IllegalStateException], () => consumer.assign(Collections.singletonList(tp))) + assertEquals(e.getMessage, "Subscription to topics, partitions and pattern are mutually exclusive") Review Comment: ditto -- 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: jira-unsubscr...@kafka.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org
Re: [PR] KAFKA-16287: Implement example tests for common rebalance callback [kafka]
lianetm commented on code in PR #15408: URL: https://github.com/apache/kafka/pull/15408#discussion_r1591377060 ## core/src/test/scala/integration/kafka/api/PlaintextConsumerCallbackTest.scala: ## @@ -0,0 +1,138 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE + * file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file + * to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ +package integration.kafka.api + +import kafka.api.{AbstractConsumerTest, BaseConsumerTest} +import kafka.utils.{TestInfoUtils, TestUtils} +import org.apache.kafka.clients.consumer.{Consumer, ConsumerRebalanceListener} +import org.apache.kafka.common.TopicPartition +import org.junit.jupiter.api.Assertions.{assertEquals, assertThrows, assertTrue} +import org.junit.jupiter.params.ParameterizedTest +import org.junit.jupiter.params.provider.{Arguments, MethodSource} + +import java.util +import java.util.Arrays.asList +import java.util.Collections +import java.util.concurrent.atomic.AtomicBoolean +import java.util.stream.Stream + +/** + * Integration tests for the consumer that cover interaction with the consumer from within callbacks + * and listeners. + */ +class PlaintextConsumerCallbackTest extends AbstractConsumerTest { + + @ParameterizedTest(name = TestInfoUtils.TestWithParameterizedQuorumAndGroupProtocolNames) + @MethodSource(Array("getTestQuorumAndGroupProtocolParametersAll")) + def testConsumerRebalanceListenerAssignOnPartitionsAssigned(quorum: String, groupProtocol: String): Unit = { +val tp = new TopicPartition(topic, 0); +triggerOnPartitionsAssigned { (consumer, _) => + val e: Exception = assertThrows(classOf[IllegalStateException], () => consumer.assign(Collections.singletonList(tp))) + assertEquals(e.getMessage, "Subscription to topics, partitions and pattern are mutually exclusive") Review Comment: nit: the message is totally accurate but this test has nothing to do with pattern subscription, so maybe clearer for whoever gets the failure to be specific about the problem on this test (subscribe & assign mutually exclusive). We'll probably end up adding another test where the failure would be calling subscribe(Pattern) on the callback, and that one would require the message for the 2 subscribe calls being mutually exclusive. -- 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: jira-unsubscr...@kafka.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org
Re: [PR] KAFKA-16287: Implement example tests for common rebalance callback [kafka]
lianetm commented on code in PR #15408: URL: https://github.com/apache/kafka/pull/15408#discussion_r1591300734 ## core/src/test/scala/integration/kafka/api/PlaintextConsumerCallbackTest.scala: ## @@ -0,0 +1,138 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE + * file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file + * to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ +package integration.kafka.api + +import kafka.api.{AbstractConsumerTest, BaseConsumerTest} +import kafka.utils.{TestInfoUtils, TestUtils} +import org.apache.kafka.clients.consumer.{Consumer, ConsumerRebalanceListener} +import org.apache.kafka.common.TopicPartition +import org.junit.jupiter.api.Assertions.{assertEquals, assertThrows, assertTrue} +import org.junit.jupiter.params.ParameterizedTest +import org.junit.jupiter.params.provider.{Arguments, MethodSource} + +import java.util +import java.util.Arrays.asList +import java.util.Collections +import java.util.concurrent.atomic.AtomicBoolean +import java.util.stream.Stream + +/** + * Integration tests for the consumer that cover interaction with the consumer from within callbacks + * and listeners. Review Comment: nit: "callbacks and listeners" in this context refer to the same right? maybe just "rebalance callbacks" -- 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: jira-unsubscr...@kafka.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org
Re: [PR] KAFKA-16287: Implement example tests for common rebalance callback [kafka]
lucasbru commented on PR #15408: URL: https://github.com/apache/kafka/pull/15408#issuecomment-2056028533 @cadonna could you please review this? -- 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: jira-unsubscr...@kafka.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org
Re: [PR] KAFKA-16287: Implement example tests for common rebalance callback [kafka]
kirktrue commented on PR #15408: URL: https://github.com/apache/kafka/pull/15408#issuecomment-2052100630 @lucasbru—I think it's worth adding the tests, even if we already know there are more to be added in the future. -- 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: jira-unsubscr...@kafka.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org
Re: [PR] KAFKA-16287: Implement example tests for common rebalance callback [kafka]
lucasbru commented on PR #15408: URL: https://github.com/apache/kafka/pull/15408#issuecomment-2049854234 @kirktrue Just because it's meant to be an example, and doesn't cover all combinations. If you want me to merge it like this, we can do that as well. -- 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: jira-unsubscr...@kafka.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org
Re: [PR] KAFKA-16287: Implement example tests for common rebalance callback [kafka]
kirktrue commented on PR #15408: URL: https://github.com/apache/kafka/pull/15408#issuecomment-2048153273 @lucasbru—sorry that I've forgotten, but why don't we want to merge this? -- 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: jira-unsubscr...@kafka.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org
Re: [PR] KAFKA-16287: Implement example tests for common rebalance callback [kafka]
lucasbru commented on PR #15408: URL: https://github.com/apache/kafka/pull/15408#issuecomment-1961025640 I'm keeping this around as an example, but I don't intend to merge this. I think we can merge it together with https://issues.apache.org/jira/browse/KAFKA-16111. Converting to a draft. -- 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: jira-unsubscr...@kafka.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org
Re: [PR] KAFKA-16287: Implement example tests for common rebalance callback [kafka]
kirktrue commented on PR #15408: URL: https://github.com/apache/kafka/pull/15408#issuecomment-1959841458 @lucasbru—Yes, this looks perfect! -- 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: jira-unsubscr...@kafka.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org
Re: [PR] KAFKA-16287: Implement example tests for common rebalance callback [kafka]
lucasbru commented on PR #15408: URL: https://github.com/apache/kafka/pull/15408#issuecomment-1956664015 @kirktrue Hope that helps! -- 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: jira-unsubscr...@kafka.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org