소스 검색

avoid that a system crash can cause messages to be propagated twice

fdatasync() the journal after creating the pair record and recording
the TUID, but before the message propagation actually starts.

all other writes to the journal are not flushed, as they will at worst
cause some unnecessary network traffic without visible effect.
Oswald Buddenhagen 12 년 전
부모
커밋
49223b2df2
1개의 변경된 파일1개의 추가작업 그리고 0개의 파일을 삭제
  1. 1 0
      src/sync.c

+ 1 - 0
src/sync.c

@@ -1202,6 +1202,7 @@ box_loaded( int sts, void *aux )
 						cv->srec = srec;
 						cv->msg = tmsg;
 						Fprintf( svars->jfp, "# %d %d %." stringify(TUIDL) "s\n", srec->uid[M], srec->uid[S], srec->tuid );
+						fdatasync( fileno( svars->jfp ) );
 						debug( "  -> %sing message, TUID %." stringify(TUIDL) "s\n", str_hl[t], srec->tuid );
 						if (copy_msg( cv ))
 							return;