Skip to content

Commit 45c91ce

Browse files
Andrei Goncharovashcherbakov
Andrei Goncharov
authored andcommitted
[Closes INDY-849] Bug Fixed: Pool can't be restored after losing consensus if at least one view change was happened (#382)
1 parent 9f80224 commit 45c91ce

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

plenum/server/replica.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -981,7 +981,8 @@ def __is_next_pre_prepare(self, view_no: int, pp_seq_no: int):
981981
if pp_seq_no - last_pp_seq_no > 1:
982982
logger.warning('{} missing PRE-PREPAREs between {} and {}'.
983983
format(self, pp_seq_no, last_pp_seq_no))
984-
self._request_missing_three_phase_messages(last_pp_seq_no, pp_seq_no, last_pp_view_no)
984+
self._request_missing_three_phase_messages(last_pp_seq_no, pp_seq_no,
985+
last_pp_view_no, view_no)
985986
self._setup_for_non_master()
986987
return False
987988

@@ -1967,9 +1968,10 @@ def can_pp_seq_no_be_in_view(self, view_no, pp_seq_no):
19671968
view_no < self.viewNo and self.last_prepared_before_view_change and compare_3PC_keys(
19681969
(view_no, pp_seq_no), self.last_prepared_before_view_change) >= 0)
19691970

1970-
def _request_missing_three_phase_messages(self, frm: int, to: int, view_no: int) -> None:
1971-
for i in range(1, to - frm):
1972-
request_data = (view_no, frm + i)
1971+
def _request_missing_three_phase_messages(self, seq_frm: int, seq_to: int, view_frm: int, view_to: int) -> None:
1972+
for pp_seq_no in range(seq_frm + 1, seq_to + 1):
1973+
for view_no in range(view_frm, view_to + 1):
1974+
request_data = (view_no, pp_seq_no)
19731975
self._request_pre_prepare(request_data)
19741976
self._request_prepare(request_data)
19751977

0 commit comments

Comments
 (0)