You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Core was generated by `/home/yugabyte/tserver/bin/yb-tserver --flagfile /home/yugabyte/tserver/conf/se'.
Program terminated with signal 11, Segmentation fault.
#0 GetSmallestFrontierLocked (this=<optimized out>) at ../../src/yb/rocksdb/db/memtable.h:354
354 ../../src/yb/rocksdb/db/memtable.h: No such file or directory.
Here frontiers_ maybe not yet initialized. GetSmallestFrontierLocked is only called from code path flushing when we hit global memtable memory limit and there is a check above that call for !mem->IsEmpty(), so memtable shouldn’t be empty.
Checked the core file and confirmed that there was non-empty memtable for intents DB with not initialized frontiers.
By design frontiers_ should be initialized when memtable is not empty, so there is some bug in frontiers_ initialization which leads to crash together with missed check for frontiers_ to be initialized inside GetSmallestFrontierLocked().
The text was updated successfully, but these errors were encountered:
This bug is related to 1.2.
Remove intents of aborted transaction could result in non empty memtable of intents DB with NULL frontiers.
D6860 (#1240) changed logic of remove intents, so this issue does not exist in 1.3.
…tSmallestFrontierLocked
Summary:
More details about the issue are described in #2010.
This revision adds a check for `frontiers_` into `DBImpl::GetSmallestFrontierLocked` and also warning and debug fatal logs when frontiers are not initialized for non-empty memtable inside `DBImpl::GetMutableMemTableSmallestFrontier` since this should not happen.
Test Plan: Jenkins
Reviewers: bogdan, sergei
Reviewed By: sergei
Subscribers: ybase
Differential Revision: https://phabricator.dev.yugabyte.com/D7033
From core file:
Here
frontiers_
maybe not yet initialized.GetSmallestFrontierLocked
is only called from code path flushing when we hit global memtable memory limit and there is a check above that call for!mem->IsEmpty()
, so memtable shouldn’t be empty.Checked the core file and confirmed that there was non-empty memtable for intents DB with not initialized frontiers.
By design
frontiers_
should be initialized when memtable is not empty, so there is some bug infrontiers_
initialization which leads to crash together with missed check forfrontiers_
to be initialized insideGetSmallestFrontierLocked()
.The text was updated successfully, but these errors were encountered: