Fix the potential memory leak of ReplayMultiThread (#5949)
Summary: The pointer ra needs to be freed the status s returns not OK. In the previous PR https://github.com/facebook/rocksdb/issues/5934 , the ra is not freed which might cause potential memory leak. Fix this issue by moving the clarification of ra inside the while loop and freeing it as desired. Pull Request resolved: https://github.com/facebook/rocksdb/pull/5949 Test Plan: pass make asan check. Differential Revision: D18045726 Pulled By: zhichao-cao fbshipit-source-id: d5445b7b832c8bb1dafe008bafea7bfe9eb0b1ce
This commit is contained in:
parent
2ce6aa5f39
commit
7245fb5f63
@ -313,13 +313,13 @@ Status Replayer::MultiThreadReplay(uint32_t threads_num) {
|
|||||||
std::chrono::system_clock::now();
|
std::chrono::system_clock::now();
|
||||||
WriteOptions woptions;
|
WriteOptions woptions;
|
||||||
ReadOptions roptions;
|
ReadOptions roptions;
|
||||||
ReplayerWorkerArg* ra;
|
|
||||||
uint64_t ops = 0;
|
uint64_t ops = 0;
|
||||||
while (s.ok()) {
|
while (s.ok()) {
|
||||||
ra = new ReplayerWorkerArg;
|
ReplayerWorkerArg* ra = new ReplayerWorkerArg;
|
||||||
ra->db = db_;
|
ra->db = db_;
|
||||||
s = ReadTrace(&(ra->trace_entry));
|
s = ReadTrace(&(ra->trace_entry));
|
||||||
if (!s.ok()) {
|
if (!s.ok()) {
|
||||||
|
delete ra;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
ra->woptions = woptions;
|
ra->woptions = woptions;
|
||||||
|
Loading…
Reference in New Issue
Block a user