From e5c0d81b04ec1337dc81d6271cf3c3af99c3e54f Mon Sep 17 00:00:00 2001 From: wangscu Date: Tue, 6 Dec 2011 13:00:44 +0800 Subject: [PATCH] bug when the write file already in the read_files the put operation will replace it by file name key,and there will have one bitcaskfile can not release. --- src/main/java/com/trifork/bitcask/BitCask.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/trifork/bitcask/BitCask.java b/src/main/java/com/trifork/bitcask/BitCask.java index fdeedb1..c4c435f 100644 --- a/src/main/java/com/trifork/bitcask/BitCask.java +++ b/src/main/java/com/trifork/bitcask/BitCask.java @@ -105,7 +105,12 @@ public void put(ByteString key, ByteString value) throws IOException { write_lock.write_activefile(nwf); write_file = nwf; - read_files.put(last_write_file.filename, last_write_file); + if (read_files.get(last_write_file.filename) == null) + { + read_files.put(last_write_file.filename, last_write_file); + } else { + last_write_file.close(); + } break; }