I think I'm convinced your way for exposing the exception out of the client, let's leave it as is.
Guozhang On Thu, Jun 23, 2016 at 8:31 AM, Grant Henke <ghe...@cloudera.com> wrote: > Hi Guozhang, > > Thanks for the review! > > In the timeout <= 0 case, if the client should always ignore and treat > > the timeout > > error code as "OK", should we just return no error code in this case? > > > The wiki behavior documentation was there, but a question was never brought > up for create or delete. I treat a 0ms timeout the same as 1ms timeout, and > that generally means that all valid topics will have a timeout exception. I > am not sure having special behavior for <= 0 is more intuitive. I am not > sure the client would always want to ignore the exception, it may want to > be relayed to the user. Regardless handling on the client side should be > fairly straight forward either way. > > I could be convinced otherwise, but I am leaning towards leaving it as is. > > Thanks, > Grant > > > > > On Tue, Jun 21, 2016 at 6:08 PM, Guozhang Wang <wangg...@gmail.com> wrote: > > > I see we have the similar setting for CreateTopic request timeout <= 0 as > > well, so maybe it has been discussed and I simply overlooked.. otherwise > my > > question is for both of these cases. > > > > Guozhang > > > > On Tue, Jun 21, 2016 at 4:07 PM, Guozhang Wang <wangg...@gmail.com> > wrote: > > > > > Thanks Grant, looks good to me overall. One minor comment below: > > > > > > > - The error code in the response will either contain an > argument > > > > validation exception or a timeout exception. If you receive a > > > timeout > > > > exception, because you asked for 0 timeout, you can assume the > > > message was > > > > valid and the topic deletion was triggered. > > > > > > In the timeout <= 0 case, if the client should always ignore and treat > > the timeout > > > error code as "OK", should we just return no error code in this case? > > > > > > > > > Guozhang > > > > > > > > > On Tue, Jun 21, 2016 at 8:17 AM, Grant Henke <ghe...@cloudera.com> > > wrote: > > > > > >> Hi Ismael, > > >> > > >> Thanks for the review. See my responses below. > > >> > > >> One potential issue is that the number of topics in the response won't > > >> > match the number of topics in the request. Worth checking what > others > > >> think > > >> > of this one. > > >> > > >> > > >> Based on the choice of how we handled duplicate topics in the create > > >> topics > > >> protocol, I took the same approach here. At one point create topics > > would > > >> disconnect because I could't return an error per topic request. In the > > end > > >> the preference was to return and error code even though the > cardinality > > >> would be different. > > >> > > >> 4. When requesting to delete a topic that is already marked for > > >> > > > deletion, the request will wait for the wait for the timeout > > and > > >> > > return as > > >> > > > usual > > >> > > > >> > Do you mean that it will wait up to the timeout until the delete is > > >> > "complete" as per the definition in `6`? Or will it wait > > unconditionally > > >> > until the timeout expires? It would be good to make that clear. > > >> > > > >> > > >> That's exactly what I meant. I updated the wiki. > > >> > > >> This could leak topic name information (as per KAFKA-3396, which was > > filed > > >> > by you). We would probably want to return `InvalidTopic` for the > case > > >> where > > >> > the user doesn't have a valid `DESCRIBE TOPIC` ACL, right? > > >> > > >> > > >> Good point. I will update the wiki and patch. > > >> > > >> Unauthorized requests will receive a TopicAuthorizationException if > they > > >> are authorized to the "Describe" Operation on the "Topic" resource. > > >> Otherwise they will receive an InvalidTopicException as if the topic > > does > > >> not exist. > > >> > > >> I was wondering (and this applies to the create topic as well), is > there > > >> > any value in a flag that says whether the timeout expired or not? > > >> > > >> > > >> In both the create and delete response we return a TimeoutException > > error > > >> code for the topics that did not "complete" in time. This allows the > > >> client > > >> to know which topics actions completed and which timed out. I updated > > the > > >> wiki to explicitly call this out in the response section. > > >> > > >> Thanks, > > >> Grant > > >> > > >> On Tue, Jun 21, 2016 at 5:44 AM, Ismael Juma <ism...@juma.me.uk> > wrote: > > >> > > >> > Thanks Grant. A few comments inline. > > >> > > > >> > On Mon, Jun 20, 2016 at 9:09 PM, Grant Henke <ghe...@cloudera.com> > > >> wrote: > > >> > > > >> > > > 2. If there are multiple instructions for the same topic in > one > > >> > > > request the extra request will be ignored > > >> > > > - This is because the list of topics is modeled server > side > > >> as a > > >> > > set > > >> > > > - Multiple deletes results in the same end goal, so > handling > > >> this > > >> > > > error for the user should be okay > > >> > > > > >> > > > >> > One potential issue is that the number of topics in the response > won't > > >> > match the number of topics in the request. Worth checking what > others > > >> think > > >> > of this one. > > >> > > > >> > 4. When requesting to delete a topic that is already marked for > > >> > > > deletion, the request will wait for the wait for the timeout > > and > > >> > > return as > > >> > > > usual > > >> > > > >> > > > >> > Do you mean that it will wait up to the timeout until the delete is > > >> > "complete" as per the definition in `6`? Or will it wait > > unconditionally > > >> > until the timeout expires? It would be good to make that clear. > > >> > > > >> > > > >> > > > 5. The principal must be authorized to the "Delete" Operation > > on > > >> the > > >> > > > > >> > > "Topic" resource to delete the topic. > > >> > > > - Unauthorized requests will receive a > > >> > TopicAuthorizationException > > >> > > > > >> > > > >> > This could leak topic name information (as per KAFKA-3396, which was > > >> filed > > >> > by you). We would probably want to return `InvalidTopic` for the > case > > >> where > > >> > the user doesn't have a valid `DESCRIBE TOPIC` ACL, right? > > >> > > > >> > > > >> > > > - Why have a timeout at all? Deletes could take a while? > > >> > > > > >> > > > >> > I was wondering (and this applies to the create topic as well), is > > there > > >> > any value in a flag that says whether the timeout expired or not? > > >> > > > >> > Thanks, > > >> > Ismael > > >> > > > >> > > >> > > >> > > >> -- > > >> Grant Henke > > >> Software Engineer | Cloudera > > >> gr...@cloudera.com | twitter.com/gchenke | linkedin.com/in/granthenke > > >> > > > > > > > > > > > > -- > > > -- Guozhang > > > > > > > > > > > -- > > -- Guozhang > > > > > > -- > Grant Henke > Software Engineer | Cloudera > gr...@cloudera.com | twitter.com/gchenke | linkedin.com/in/granthenke > -- -- Guozhang