[Groonga-commit] groonga/groonga [master] extend to remove old trie files.

Back to archive index

null+****@clear***** null+****@clear*****
2011年 11月 4日 (金) 19:27:04 JST


Susumu Yata	2011-11-04 10:27:04 +0000 (Fri, 04 Nov 2011)

  New Revision: f040c96662ddb8833df0de138e4f18dedcc92acc

  Log:
    extend to remove old trie files.

  Modified files:
    lib/dat.cpp

  Modified: lib/dat.cpp (+8 -1)
===================================================================
--- lib/dat.cpp    2011-11-04 08:45:50 +0000 (66c9831)
+++ lib/dat.cpp    2011-11-04 10:27:04 +0000 (0f9dc32)
@@ -166,6 +166,10 @@ grn_dat_open_trie_if_needed(grn_ctx *ctx, grn_dat *dat)
   critical_section.leave();
 
   delete old_trie;
+  if (file_id >= 3) {
+    grn_dat_generate_trie_path(grn_io_path(dat->io), trie_path, file_id - 2);
+    grn_io_remove(ctx, trie_path);
+  }
 #endif
   return true;
 }
@@ -176,6 +180,7 @@ bool grn_dat_rebuild_trie(grn_ctx *ctx, grn_dat *dat) {
   try {
     const grn::dat::Trie * const trie = static_cast<const grn::dat::Trie *>(dat->trie);
     grn::dat::Trie().create(*trie, trie_path, trie->file_size() * 2);
+//    grn::dat::Trie().create(*trie, trie_path, (grn::dat::UInt64)(trie->file_size() * 1.5));
   } catch (const grn::dat::Exception &ex) {
     ERR(grn_dat_translate_error_code(ex.code()),
         const_cast<char *>("grn::dat::Trie::create failed"));
@@ -301,7 +306,9 @@ grn_dat_remove(grn_ctx *ctx, const char *path)
   grn_dat_close(ctx, dat);
 
   for (uint32_t i = file_id; i > 0; --i) {
-    if (grn_io_remove(ctx, path) != GRN_SUCCESS) {
+    char trie_path[PATH_MAX];
+    grn_dat_generate_trie_path(path, trie_path, i);
+    if (grn_io_remove(ctx, trie_path) != GRN_SUCCESS) {
       break;
     }
   }




Groonga-commit メーリングリストの案内
Back to archive index