[ 
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)

Reply via email to