Explorar o código

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 %!s(int64=12) %!d(string=hai) anos
pai
achega
49223b2df2
Modificáronse 1 ficheiros con 1 adicións e 0 borrados
  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;