an experimental patch for fixing ldb bloat
[kai/samba.git] / source4 / lib / ldb / ldb_tdb / ldb_tdb.c
index 9e3ad80705fb08c20293d1564499aef740a25f05..ea460def65ac1cb528d7eaa969c611914fd4ad24 100644 (file)
@@ -850,6 +850,8 @@ static int ltdb_start_trans(struct ldb_module *module)
 
        ltdb->in_transaction++;
 
+       ltdb_index_transaction_start(module);
+
        return LDB_SUCCESS;
 }
 
@@ -860,6 +862,10 @@ static int ltdb_end_trans(struct ldb_module *module)
 
        ltdb->in_transaction--;
 
+       if (ltdb_index_transaction_commit(module) != 0) {
+               return ltdb_err_map(tdb_error(ltdb->tdb));
+       }
+
        if (tdb_transaction_commit(ltdb->tdb) != 0) {
                return ltdb_err_map(tdb_error(ltdb->tdb));
        }
@@ -874,6 +880,10 @@ static int ltdb_del_trans(struct ldb_module *module)
 
        ltdb->in_transaction--;
 
+       if (ltdb_index_transaction_cancel(module) != 0) {
+               return ltdb_err_map(tdb_error(ltdb->tdb));
+       }
+
        if (tdb_transaction_cancel(ltdb->tdb) != 0) {
                return ltdb_err_map(tdb_error(ltdb->tdb));
        }