Pārlūkot izejas kodu

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 gadi atpakaļ
vecāks
revīzija
49223b2df2
1 mainītis faili ar 1 papildinājumiem un 0 dzēšanām
  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;