@@ -163,17 +163,20 @@ int logTruncate(long long index, long long term) {
163
163
return PREZ_ERR ;
164
164
}
165
165
166
- entry = listNodeValue (listIndex (server .cluster -> log_entries ,
167
- index - server .cluster -> start_index - 1 ));
168
- ftruncate (server .cluster -> log_fd , entry -> position );
169
- server .cluster -> log_current_size = entry -> position ;
170
- listRewind (server .cluster -> log_entries , & li );
171
- li .next = listIndex (server .cluster -> log_entries ,
172
- index - server .cluster -> start_index - 1 );
173
- while ((ln = listNext (& li )) != NULL ) {
174
- logEntryNode * le = listNodeValue (ln );
175
- listDelNode (server .cluster -> log_entries ,ln );
176
- zfree (le );
166
+ if (index < server .cluster -> start_index +
167
+ listLength (server .cluster -> log_entries )) {
168
+ entry = listNodeValue (listIndex (server .cluster -> log_entries ,
169
+ index - server .cluster -> start_index - 1 ));
170
+ ftruncate (server .cluster -> log_fd , entry -> position );
171
+ server .cluster -> log_current_size = entry -> position ;
172
+ listRewind (server .cluster -> log_entries , & li );
173
+ li .next = listIndex (server .cluster -> log_entries ,
174
+ index - server .cluster -> start_index - 1 );
175
+ while ((ln = listNext (& li )) != NULL ) {
176
+ logEntryNode * le = listNodeValue (ln );
177
+ listDelNode (server .cluster -> log_entries ,ln );
178
+ zfree (le );
179
+ }
177
180
}
178
181
}
179
182
return PREZ_OK ;
@@ -247,11 +250,13 @@ int logWriteEntry(logEntry e) {
247
250
//memcpy(&en->log_entry,&e,sizeof(logEntry));
248
251
en -> position = server .cluster -> log_current_size ;
249
252
server .cluster -> log_current_size += sdslen (buf );
250
- prezLog (PREZ_DEBUG ,"en term:%lld/%lld index:%lld, %lu" ,
253
+ prezLog (PREZ_DEBUG ,"Add to List: en term:%lld/%lld index:%lld, %lu" ,
251
254
en -> log_entry .term ,
252
255
e .term ,
253
256
en -> log_entry .index , sizeof (en ));
254
257
listAddNodeTail (server .cluster -> log_entries ,en );
258
+ prezLog (PREZ_DEBUG ,"listLength:%lu" ,
259
+ listLength (server .cluster -> log_entries ));
255
260
256
261
return PREZ_OK ;
257
262
}
@@ -310,7 +315,10 @@ long long logCurrentIndex(void) {
310
315
ln = listIndex (server .cluster -> log_entries , -1 );
311
316
if (ln ) {
312
317
entry = ln -> value ;
318
+ prezLog (PREZ_DEBUG ,"currentIndex:%lld" ,
319
+ entry -> log_entry .index );
313
320
return (entry -> log_entry .index );
314
321
}
322
+ prezLog (PREZ_DEBUG ,"currentIndex:0" );
315
323
return 0 ;
316
324
}
0 commit comments