Vihang Karajgaonkar has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/14319 )

Change subject: IMPALA-8984: Fix race condition in creating Kudu table
......................................................................


Patch Set 13:

> > > > (1 comment)
 > > >
 > > > Lock both kudu table creation and hms table creation by
 > > 'DdlLock_'
 > > > can certainly solve this problem, but maybe to heavy.
 > > > It doesn't matter that KuduCatalogOpExecutor.createManagedTable
 > > is
 > > > not thread-safey, because the root reason for this bug is:
 > create
 > > > table in hms failed(first query already created) caused an
 > > > exception which lead to table delete in kudu storage(line
 > 2254).
 > > > Even two threads create table in kudu stoage at the same time,
 > > kudu
 > > > provide guarantee to this situation, and it's doesn't matter
 > > which
 > > > query created table in kudu finally. So I just add the code to
 > > > check whether table already exist in hms.
 > >
 > > I think what I meant was if there are 2 threads which try to
 > create
 > > a Kudu table with the same name, one of them might succeed while
 > > other will fail at 
 > > https://github.com/apache/impala/blob/master/fe/src/main/java/org/apache/impala/service/KuduCatalogOpExecutor.java#L101
 > >
 > > This error will be thrown as ImpalaRuntimeException which is will
 > > fail the query. If the query specifies create if not exists,
 > > ideally it should be idempotent. It may not be the exact problem
 > > that this patch is fixing but it is close enough to the race
 > > condition described and it would be good to handle this case as
 > > well.
 >
 > Thanks for your kindly review and reply, Vihang. I understand, you
 > mean two thread create same table, and 'kudu.createTable' is not
 > thread-safety, this may caused ImpalaRuntimeException without 'if
 > not exists'. I've already read the related code, and here is my
 > opion:
 > Firstly, not only create, but drop/rename/alter all exist the
 > problem you mentioned above, we need to add lock in all these
 > situation. And for these situations, more test cases need to be
 > written to verify the function, is it better to deal with these
 > issues in another jira?
 > Secondly, this bug is not very similar to those issues
 > describe(kudu create/drop/rename/alter), maybe 'race condition' is
 > not very exactly for this jira.
 > How do you think?
 > Besides, I'm not sure that my fe test is suitable. Quanlong Huang
 > suggest me to write an e2e test by python. But I cannot reporduce
 > this bug with an e2e test case, due to thread schedule path are
 > random, only specific path can lead to this bug, so I've no idea
 > about this.

I am okay with fixing the other race condition with respect to kudu create 
table statement erroring out if that works better for you.


--
To view, visit http://gerrit.cloudera.org:8080/14319
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: Impala-ASF
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I1a4047bcdaa6b346765b96e8c36bb747a2b0091d
Gerrit-Change-Number: 14319
Gerrit-PatchSet: 13
Gerrit-Owner: wangsheng <sky...@163.com>
Gerrit-Reviewer: Impala Public Jenkins <impala-public-jenk...@cloudera.com>
Gerrit-Reviewer: Quanlong Huang <huangquanl...@gmail.com>
Gerrit-Reviewer: Vihang Karajgaonkar <vih...@cloudera.com>
Gerrit-Reviewer: wangsheng <sky...@163.com>
Gerrit-Comment-Date: Thu, 19 Dec 2019 18:47:51 +0000
Gerrit-HasComments: No

Reply via email to