From: Sage Weil Date: Tue, 29 Dec 2015 18:00:47 +0000 (-0500) Subject: os/bluestore/BlueRocksEnv: fix several leaks X-Git-Tag: v10.0.3~154^2~16 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=3f8e2bd8f1d44abc3172c1a8277985364144891c;p=ceph.git os/bluestore/BlueRocksEnv: fix several leaks Signed-off-by: Sage Weil --- diff --git a/src/os/bluestore/BlueRocksEnv.cc b/src/os/bluestore/BlueRocksEnv.cc index eeb9bdaf48c4..a7659dc79f6e 100644 --- a/src/os/bluestore/BlueRocksEnv.cc +++ b/src/os/bluestore/BlueRocksEnv.cc @@ -30,6 +30,9 @@ class BlueRocksSequentialFile : public rocksdb::SequentialFile { BlueFS::FileReader *h; public: BlueRocksSequentialFile(BlueFS *fs, BlueFS::FileReader *h) : fs(fs), h(h) {} + ~BlueRocksSequentialFile() { + delete h; + } // Read up to "n" bytes from the file. "scratch[0..n-1]" may be // written by this routine. Sets "*result" to the data that was @@ -73,6 +76,9 @@ class BlueRocksRandomAccessFile : public rocksdb::RandomAccessFile { BlueFS::FileReader *h; public: BlueRocksRandomAccessFile(BlueFS *fs, BlueFS::FileReader *h) : fs(fs), h(h) {} + ~BlueRocksRandomAccessFile() { + delete h; + } // Read up to "n" bytes from the file starting at "offset". // "scratch[0..n-1]" may be written by this routine. Sets "*result" @@ -149,6 +155,9 @@ class BlueRocksWritableFile : public rocksdb::WritableFile { BlueFS::FileWriter *h; public: BlueRocksWritableFile(BlueFS *fs, BlueFS::FileWriter *h) : fs(fs), h(h) {} + ~BlueRocksWritableFile() { + delete h; + } // Indicates if the class makes use of unbuffered I/O /*bool UseOSBuffer() const { @@ -200,7 +209,6 @@ class BlueRocksWritableFile : public rocksdb::WritableFile { return err_to_status(r); } - delete h; return rocksdb::Status::OK(); } @@ -297,6 +305,8 @@ class BlueRocksFileLock : public rocksdb::FileLock { BlueFS *fs; BlueFS::FileLock *lock; BlueRocksFileLock(BlueFS *fs, BlueFS::FileLock *l) : fs(fs), lock(l) { } + ~BlueRocksFileLock() { + } }; @@ -513,6 +523,7 @@ rocksdb::Status BlueRocksEnv::UnlockFile(rocksdb::FileLock* lock) int r = fs->unlock_file(l->lock); if (r < 0) return err_to_status(r); + delete lock; return rocksdb::Status::OK(); }