[GitHub] sijie commented on a change in pull request #1156: Introduce ActiveConsumerListener for realizing if a consumer is active in a failover subscription group

2018-02-13 Thread GitBox
sijie commented on a change in pull request #1156: Introduce 
ActiveConsumerListener for realizing if a consumer is active in a failover 
subscription group
URL: https://github.com/apache/incubator-pulsar/pull/1156#discussion_r167913386
 
 

 ##
 File path: 
pulsar-client/src/main/java/org/apache/pulsar/client/api/ActiveConsumerListener.java
 ##
 @@ -0,0 +1,36 @@
+/*
+ * 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 org.apache.pulsar.client.api;
+
+/**
+ * Listener on the consumer state changes.
+ */
+public interface ActiveConsumerListener {
 
 Review comment:
   I think lambda is good for non-branchable operations. However it doesn't fit 
well for branchable operations. we can make a single method here using 
`Status`, however the application logic has to write `if-else` block to take 
different actions. It is much clear to me if we have two different methods for 
two different actions. so I chose to have separated methods for handling become 
active and become inactive, when applications are wring the listener, you just 
need to think what should do when it become active and what should do when it 
become inactive.
   
   However if you think using `Status` and having a lambda interface is much 
better, let me know. I will make the change.


This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services


[GitHub] sijie commented on a change in pull request #1156: Introduce ActiveConsumerListener for realizing if a consumer is active in a failover subscription group

2018-02-13 Thread GitBox
sijie commented on a change in pull request #1156: Introduce 
ActiveConsumerListener for realizing if a consumer is active in a failover 
subscription group
URL: https://github.com/apache/incubator-pulsar/pull/1156#discussion_r167911055
 
 

 ##
 File path: 
pulsar-broker/src/main/java/org/apache/pulsar/broker/service/AbstractDispatcherSingleActiveConsumer.java
 ##
 @@ -81,20 +82,33 @@ public AbstractDispatcherSingleActiveConsumer(SubType 
subscriptionType, int part
 
 protected abstract void cancelPendingRead();
 
-protected void pickAndScheduleActiveConsumer() {
+protected void notifyConsumerGroupChanged(Consumer activeConsumer) {
+if (null != activeConsumer && subscriptionType == SubType.Failover) {
+consumers.forEach(consumer ->
 
 Review comment:
   I think this is the first iteration for this listener. I am trying to be 
avoiding any optimization at the beginning and deliver notifications for every 
changes. This way we can make sure the first version is "eventually" correct 
without hitting any race condition on handling this kind of smart logic. If 
sending multiple notifications become a problem we can do a subsequent change 
later.
   
   does that make sense to you?


This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services


[GitHub] sijie commented on a change in pull request #1156: Introduce ActiveConsumerListener for realizing if a consumer is active in a failover subscription group

2018-02-13 Thread GitBox
sijie commented on a change in pull request #1156: Introduce 
ActiveConsumerListener for realizing if a consumer is active in a failover 
subscription group
URL: https://github.com/apache/incubator-pulsar/pull/1156#discussion_r167909684
 
 

 ##
 File path: 
pulsar-client/src/main/java/org/apache/pulsar/client/impl/PulsarClientImpl.java
 ##
 @@ -241,6 +242,13 @@ public Consumer subscribe(String topic, String 
subscription, ConsumerConfigurati
 new 
PulsarClientException.InvalidConfigurationException("Consumer configuration 
undefined"));
 }
 
+if (conf.getActiveConsumerListener() != null
 
 Review comment:
   I think the main motivation for this change here is for supporting failover 
subscription. I would disable this feature for other subscriptions for now, and 
introduce it if we really need it. does that make sense to you?


This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services