Adar Dembo has posted comments on this change.

Change subject: KUDU-1473: fix some tablet lock usage in CatalogManager
......................................................................


Patch Set 2:

(1 comment)

http://gerrit.cloudera.org:8080/#/c/3309/2//COMMIT_MSG
Commit Message:

Line 15: GetTableLocations() call to a table whose tablets have been assigned 
but are
> I'm not entirely following what GetTableLocations has to do with this bug -
Yes, the crash is in ProcessPendingAssignments, but the DCHECK itself is:

  DCHECK(lock_.HasReaders() || lock_.HasWriteLock());

So we accessed an object without a lock while someone else had that object 
locked for reading or for writing. I don't think that "someone else" is the 
background thread, so I think it's got to be another client thread. A 
GetTableLocations() or GetTabletLocations() on the same table would lock some 
tablets for reading, and since the Java code in question does exactly that 
(create a table followed by two calls to GetTabletLocations() on the same 
table), it's conceivable that it's responsible.

It's strange, though, since the Java client is supposed to wait for the table 
to be created before continuing. That's why I'm going to spend some more time 
digging into this.


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

Gerrit-MessageType: comment
Gerrit-Change-Id: I8e24f6035f4d778995ea3f295396f5fbd760d6c6
Gerrit-PatchSet: 2
Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-Owner: Adar Dembo <a...@cloudera.com>
Gerrit-Reviewer: Adar Dembo <a...@cloudera.com>
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Todd Lipcon <t...@apache.org>
Gerrit-HasComments: Yes

Reply via email to