this repo has no description
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

Handle tlog meta timeout gracefully (fuzzer W)

garrison 0e382072 9aa58556

+13 -2
+8 -1
lib/servers/manager.ex
··· 469 469 assert max_kcv <= min_dv 470 470 471 471 %Server{pid: old_tlog_pid} = Map.fetch!(state.cluster.servers, hd(state.recovered_tlogs).id) 472 - {:ok, meta_pairs} = TLog.read_meta_store(old_tlog_pid, max_kcv) 472 + meta_pairs = 473 + case TLog.read_meta_store(old_tlog_pid, max_kcv) do 474 + {:ok, meta_pairs} -> 475 + meta_pairs 476 + {:error, :timeout} -> 477 + SimLogger.debug "Manager (generation=#{state.generation}): TLog read_meta_store timed out during recovery, exiting" 478 + exit(:shutdown) 479 + end 473 480 474 481 dbg {"Recovery", state.cluster.generation, max_kcv, min_dv} 475 482 #dbg {meta_pairs, state.cluster.tlog_generations}
+5 -1
lib/servers/tlog.ex
··· 138 138 end 139 139 140 140 def read_meta_store(server, version) do 141 - SimServer.call(server, {:read_meta_store, version}) 141 + try do 142 + SimServer.call(server, {:read_meta_store, version}) 143 + catch 144 + :exit, {:timeout, _mfa} -> {:error, :timeout} 145 + end 142 146 end 143 147 144 148 def init(%{cluster: %Cluster{} = cluster, path: path, id: id, prev_version: prev_version, meta_pairs: meta_pairs}) do