Alexey Serbin has uploaded this change for review. ( http://gerrit.cloudera.org:8080/9350
Change subject: KUDU-2295 fix nullptr dereference in Tablet ...................................................................... KUDU-2295 fix nullptr dereference in Tablet Prior to this patch, in the case of concurrent events of shutting down a tablet and running a scan on it, sometimes the code in Tablet::GetTabletAncientHistoryMark() ended up trying to dereference invalid (i.e. already deleted) pointer to a Clock object. That was because of the incorrect way of passing around a pointer originally wrapped into scoped_refptr. In essence, the construct below is a no-no since it creates two independent ref-counted objects for the same pointer: scoped_refptr<X> a(new X); scoped_refptr<X> b(a.get()); In this particular case, it might happen that after removing the last reference to Clock object originated in TSTabletManager::OpenTablet(), the delete is called for the Clock object, invalidating the clock_ member in TabletReplica, Tablet, and ServerBase objects. Change-Id: Id133f33e45e5281200fc941faa72480caf34de78 --- M src/kudu/master/sys_catalog.cc M src/kudu/server/server_base.h M src/kudu/tablet/tablet-harness.h M src/kudu/tablet/tablet-test-util.h M src/kudu/tablet/tablet_bootstrap.cc M src/kudu/tablet/tablet_bootstrap.h M src/kudu/tablet/tablet_replica-test.cc M src/kudu/tserver/tablet_copy_source_session-test.cc M src/kudu/tserver/ts_tablet_manager.cc 9 files changed, 20 insertions(+), 13 deletions(-) git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/50/9350/1 -- To view, visit http://gerrit.cloudera.org:8080/9350 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: master Gerrit-MessageType: newchange Gerrit-Change-Id: Id133f33e45e5281200fc941faa72480caf34de78 Gerrit-Change-Number: 9350 Gerrit-PatchSet: 1 Gerrit-Owner: Alexey Serbin <[email protected]>
