[
https://issues.apache.org/jira/browse/TWILL-122?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15939116#comment-15939116
]
ASF GitHub Bot commented on TWILL-122:
--------------------------------------
Github user chtyim commented on a diff in the pull request:
https://github.com/apache/twill/pull/40#discussion_r107767933
--- Diff:
twill-core/src/main/java/org/apache/twill/internal/TwillRuntimeSpecification.java
---
@@ -105,4 +114,17 @@ public String getRmSchedulerAddr() {
public Map<String, Integer> getMaxRetries() {
return maxRetries;
}
+
+ /**
+ * Returns the ZK connection string for the Kafka used for log
collections,
+ * or {@code null} if log collection is disabled.
+ */
+ @Nullable
+ public String getKafkaZKConnect() {
+ if (!isLogCollectionEnabled()) {
--- End diff --
This is because there is no way to enforce someone have to call
`isLogCollectionEnabled` first before calling the `getKafkaZKConnect` method,
meaning the `getKafkaZKConnect` method needs to handle the case when log
collection disabled anyway (either by returning `null` or returning `Optional`
or throwing exception). From the caller perspective, it seems more straight
forward to call the method and validate against the contract then calling two
methods in the right order.
However, having `getKafkaZKConnect` returning `null` (I prefer `Optional`,
but since we are on Java 7, and we are on the road on reducing reliance on
guava, so that's not really an option), can make cases like this simpler in
future when adding support for TWILL-147. E.g.
```java
YarnTwillController(@Nullable String kafkaZKConnect, ...) {
this.kafkaClient = createKafkaClient(kafkaZKConnect);
}
@Nullable
private KafkaClient createKafkaClient(@Nnullable String kafkaZKConnect) {
if (kafkaZKConnect == null) {
return null;
}
return new KafkaClient(....);
}
...
// For app launch with the current twill runner
new YarnTwillController(spec.getKafkaZKConnect(), ...);
// For running app recovered from ZK.
new YarnTwillController(amLiveNode.getKafkaZKConnect(), ...);
```
Without the `nullable` support, there would be more overloaded constructors
as well as code branches to achieve the same.
> Allow disabling the log transport
> ---------------------------------
>
> Key: TWILL-122
> URL: https://issues.apache.org/jira/browse/TWILL-122
> Project: Apache Twill
> Issue Type: Improvement
> Components: core
> Reporter: Terence Yim
> Assignee: Terence Yim
> Fix For: 0.11.0
>
>
> Currently transporting logs to Kafka is mandatory. It should be optionally so
> that application can have its own way of log collection.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)