We should not hold locks on the master's database while waiting for network I/O which may take a terribly long time to complete as this will block out all writers and could therefore be slightly problematic. ipropd-master was holding a shared lock on the database while sending a complete propation to slaves which are out of sync with the log file. We fix this by writing what we intend to send in record format into a file hdb_db_dir()/ipropd.dumpfile while holding a shared lock on the database and then we send the contents of the file after releasing the lock. We also save and re-use the file that we generated during future complete propagation events as long as the log is long enough to get us back to the state previously dumped.
30 KiB
30 KiB