When a background RDB saving/transfer terminates, call the right handler. */
| 2823 | |
| 2824 | /* When a background RDB saving/transfer terminates, call the right handler. */ |
| 2825 | void backgroundSaveDoneHandler(int exitcode, int bysignal) { |
| 2826 | int type = server.rdb_child_type; |
| 2827 | switch(server.rdb_child_type) { |
| 2828 | case RDB_CHILD_TYPE_DISK: |
| 2829 | backgroundSaveDoneHandlerDisk(exitcode,bysignal); |
| 2830 | break; |
| 2831 | case RDB_CHILD_TYPE_SOCKET: |
| 2832 | backgroundSaveDoneHandlerSocket(exitcode,bysignal); |
| 2833 | break; |
| 2834 | default: |
| 2835 | serverPanic("Unknown RDB child type."); |
| 2836 | break; |
| 2837 | } |
| 2838 | |
| 2839 | server.rdb_child_type = RDB_CHILD_TYPE_NONE; |
| 2840 | server.rdb_save_time_last = time(NULL)-server.rdb_save_time_start; |
| 2841 | server.rdb_save_time_start = -1; |
| 2842 | /* Possibly there are slaves waiting for a BGSAVE in order to be served |
| 2843 | * (the first stage of SYNC is a bulk transfer of dump.rdb) */ |
| 2844 | updateSlavesWaitingBgsave((!bysignal && exitcode == 0) ? C_OK : C_ERR, type); |
| 2845 | } |
| 2846 | |
| 2847 | /* Kill the RDB saving child using SIGUSR1 (so that the parent will know |
| 2848 | * the child did not exit for an error, but because we wanted), and performs |
no test coverage detected