@@ -89,6 +89,7 @@ impl KeyValueDatabase for TurboKeyValueDatabase {
89
89
batch : self . db . write_batch ( ) ?,
90
90
db : & self . db ,
91
91
compact_join_handle : & self . compact_join_handle ,
92
+ initial_write : self . db . is_empty ( ) ,
92
93
} ) )
93
94
}
94
95
@@ -106,6 +107,7 @@ pub struct TurboWriteBatch<'a> {
106
107
batch : turbo_persistence:: WriteBatch < WriteBuffer < ' static > , 5 > ,
107
108
db : & ' a Arc < TurboPersistence > ,
108
109
compact_join_handle : & ' a Mutex < Option < JoinHandle < Result < ( ) > > > > ,
110
+ initial_write : bool ,
109
111
}
110
112
111
113
impl < ' a > BaseWriteBatch < ' a > for TurboWriteBatch < ' a > {
@@ -126,10 +128,13 @@ impl<'a> BaseWriteBatch<'a> for TurboWriteBatch<'a> {
126
128
// Commit the write batch
127
129
self . db . commit_write_batch ( self . batch ) ?;
128
130
129
- // Start a new compaction in the background
130
- let db = self . db . clone ( ) ;
131
- let handle = spawn ( move || db. compact ( COMPACT_MAX_COVERAGE , COMPACT_MAX_MERGE_SEQUENCE ) ) ;
132
- self . compact_join_handle . lock ( ) . replace ( handle) ;
131
+ if !self . initial_write {
132
+ // Start a new compaction in the background
133
+ let db = self . db . clone ( ) ;
134
+ let handle =
135
+ spawn ( move || db. compact ( COMPACT_MAX_COVERAGE , COMPACT_MAX_MERGE_SEQUENCE ) ) ;
136
+ self . compact_join_handle . lock ( ) . replace ( handle) ;
137
+ }
133
138
134
139
Ok ( ( ) )
135
140
}
0 commit comments