iotexproject / iotexproject/iotex-core

consensus should not kick-in whilst syncing to latest tip

Open
#3,879 0 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
Go
Stars
1.6k
Forks
382
Avg merge
4d 22h
Merged PRs (30d)
17

Description

### What would you like to be added
if the node is in active sync to latest tip, consensus module should not go into PBFT consensus logic, instead should keep syncing

### Why is this needed
as explained above, this is the correct way of operating for a node

### How important you think this is for IoTeX
- [] must have
- [x] should have
- [] nice to have

### Additional information
see the log below, the node goes into PBFT logic (on an existing/past block), in the middle while it is still syncing to latest tip
```
2023-06-05T17:04:27.803Z INFO chainservice/builder.go:491 Successfully committed block. {"ioAddr": "io15ccuntztkkuu0xnfhqf2qt8y28kpu0mnr65050", "height": 20618657}
2023-06-05T17:04:27.835Z INFO chainservice/builder.go:491 Successfully committed block. {"ioAddr": "io15ccuntztkkuu0xnfhqf2qt8y28kpu0mnr65050", "height": 20618658}
2023-06-05T17:04:27.867Z INFO chainservice/builder.go:491 Successfully committed block. {"ioAddr": "io15ccuntztkkuu0xnfhqf2qt8y28kpu0mnr65050", "height": 20618659}
2023-06-05T17:04:27.898Z INFO chainservice/builder.go:491 Successfully committed block. {"ioAddr": "io15ccuntztkkuu0xnfhqf2qt8y28kpu0mnr65050", "height": 20618660}
2023-06-05T17:04:27.928Z INFO chainservice/builder.go:491 Successfully committed block. {"ioAddr": "io15ccuntztkkuu0xnfhqf2qt8y28kpu0mnr65050", "height": 20618661}
2023-06-05T17:04:27.960Z INFO chainservice/builder.go:491 Successfully committed block. {"ioAddr": "io15ccuntztkkuu0xnfhqf2qt8y28kpu0mnr65050", "height": 20618662}
2023-06-05T17:04:32.000Z WARN consensusfsm/fsm.go:476 didn't receive the proposed block before timeout {"ioAddr": "io15ccuntztkkuu0xnfhqf2qt8y28kpu0mnr65050", "height": 20618663, "epoch": 28777, "round": 2565, "proposer": "io1343pwahz73s7vzd3l8jxxrjwcugxae2nx58zwf"}
2023-06-05T17:04:33.000Z WARN consensusfsm/fsm.go:512 Not enough proposal endorsements {"ioAddr": "io15ccuntztkkuu0xnfhqf2qt8y28kpu0mnr65050", "height": 20618663, "epoch": 28777, "round": 2565, "proposer": "io1343pwahz73s7vzd3l8jxxrjwcugxae2nx58zwf"}
2023-06-05T17:04:34.000Z WARN consensusfsm/fsm.go:547 Not enough lock endorsements {"ioAddr": "io15ccuntztkkuu0xnfhqf2qt8y28kpu0mnr65050", "height": 20618663, "epoch": 28777, "round": 2565, "proposer": "io1343pwahz73s7vzd3l8jxxrjwcugxae2nx58zwf"}
2023-06-05T17:04:37.001Z WARN consensusfsm/fsm.go:476 didn't receive the proposed block before timeout {"ioAddr": "io15ccuntztkkuu0xnfhqf2qt8y28kpu0mnr65050", "height": 20618663, "epoch": 28777, "round": 2566, "proposer": "io1m8rge0h4xvmfzkc4yup766slcvn5cwymqeenpe"}
2023-06-05T17:04:38.001Z WARN consensusfsm/fsm.go:512 Not enough proposal endorsements {"ioAddr": "io15ccuntztkkuu0xnfhqf2qt8y28kpu0mnr65050", "height": 20618663, "epoch": 28777, "round": 2566, "proposer": "io1m8rge0h4xvmfzkc4yup766slcvn5cwymqeenpe"}
2023-06-05T17:04:39.001Z WARN consensusfsm/fsm.go:547 Not enough lock endorsements {"ioAddr": "io15ccuntztkkuu0xnfhqf2qt8y28kpu0mnr65050", "height": 20618663, "epoch": 28777, "round": 2566, "proposer": "io1m8rge0h4xvmfzkc4yup766slcvn5cwymqeenpe"}
2023-06-05T17:04:42.000Z WARN consensusfsm/fsm.go:476 didn't receive the proposed block before timeout {"ioAddr": "io15ccuntztkkuu0xnfhqf2qt8y28kpu0mnr65050", "height": 20618663, "epoch": 28777, "round": 2567, "proposer": "io1pgth3m3e4klanwdrfrgk6yelw03ws64ml8c22y"}
2023-06-05T17:04:43.000Z WARN consensusfsm/fsm.go:512 Not enough proposal endorsements {"ioAddr": "io15ccuntztkkuu0xnfhqf2qt8y28kpu0mnr65050", "height": 20618663, "epoch": 28777, "round": 2567, "proposer": "io1pgth3m3e4klanwdrfrgk6yelw03ws64ml8c22y"}
2023-06-05T17:04:44.001Z WARN consensusfsm/fsm.go:547 Not enough lock endorsements {"ioAddr": "io15ccuntztkkuu0xnfhqf2qt8y28kpu0mnr65050", "height": 20618663, "epoch": 28777, "round": 2567, "proposer": "io1pgth3m3e4klanwdrfrgk6yelw03ws64ml8c22y"}
2023-06-05T17:04:47.001Z WARN consensusfsm/fsm.go:476 didn't receive the proposed block before timeout {"ioAddr": "io15ccuntztkkuu0xnfhqf2qt8y28kpu0mnr65050", "height": 20618663, "epoch": 28777, "round": 2568, "proposer": "io1vdw0q7dv82g3jhmapvze99fdxeyztjrxdp7wse"}
2023-06-05T17:04:48.001Z WARN consensusfsm/fsm.go:512 Not enough proposal endorsements {"ioAddr": "io15ccuntztkkuu0xnfhqf2qt8y28kpu0mnr65050", "height": 20618663, "epoch": 28777, "round": 2568, "proposer": "io1vdw0q7dv82g3jhmapvze99fdxeyztjrxdp7wse"}
2023-06-05T17:04:49.001Z WARN consensusfsm/fsm.go:547 Not enough lock endorsements {"ioAddr": "io15ccuntztkkuu0xnfhqf2qt8y28kpu0mnr65050", "height": 20618663, "epoch": 28777, "round": 2568, "proposer": "io1vdw0q7dv82g3jhmapvze99fdxeyztjrxdp7wse"}
2023-06-05T17:04:52.001Z WARN consensusfsm/fsm.go:476 didn't receive the proposed block before timeout {"ioAddr": "io15ccuntztkkuu0xnfhqf2qt8y28kpu0mnr65050", "height": 20618663, "epoch": 28777, "round": 2569, "proposer": "io1xj0u5n20tsqwxh5a3xdtmzuz9wasft0pqjrq8t"}
2023-06-05T17:04:53.001Z WARN consensusfsm/fsm.go:512 Not enough proposal endorsements {"ioAddr": "io15ccuntztkkuu0xnfhqf2qt8y28kpu0mnr65050", "height": 20618663, "epoch": 28777, "round": 2569, "proposer": "io1xj0u5n20tsqwxh5a3xdtmzuz9wasft0pqjrq8t"}
2023-06-05T17:04:54.001Z WARN consensusfsm/fsm.go:547 Not enough lock endorsements {"ioAddr": "io15ccuntztkkuu0xnfhqf2qt8y28kpu0mnr65050", "height": 20618663, "epoch": 28777, "round": 2569, "proposer": "io1xj0u5n20tsqwxh5a3xdtmzuz9wasft0pqjrq8t"}
2023-06-05T17:04:57.001Z WARN consensusfsm/fsm.go:476 didn't receive the proposed block before timeout {"ioAddr": "io15ccuntztkkuu0xnfhqf2qt8y28kpu0mnr65050", "height": 20618663, "epoch": 28777, "round": 2570, "proposer": "io1dg65erd07hrvyme0493f2kqj2utuvpyf6jeuhd"}
2023-06-05T17:04:58.001Z WARN consensusfsm/fsm.go:512 Not enough proposal endorsements {"ioAddr": "io15ccuntztkkuu0xnfhqf2qt8y28kpu0mnr65050", "height": 20618663, "epoch": 28777, "round": 2570, "proposer": "io1dg65erd07hrvyme0493f2kqj2utuvpyf6jeuhd"}
2023-06-05T17:04:59.001Z WARN consensusfsm/fsm.go:547 Not enough lock endorsements {"ioAddr": "io15ccuntztkkuu0xnfhqf2qt8y28kpu0mnr65050", "height": 20618663, "epoch": 28777, "round": 2570, "proposer": "io1dg65erd07hrvyme0493f2kqj2utuvpyf6jeuhd"}
2023-06-05T17:05:02.000Z WARN consensusfsm/fsm.go:476 didn't receive the proposed block before timeout {"ioAddr": "io15ccuntztkkuu0xnfhqf2qt8y28kpu0mnr65050", "height": 20618663, "epoch": 28777, "round": 2571, "proposer": "io1c5a8kv4nljt4dy2mnxk23rj0255a9x4uvn4x5m"}
2023-06-05T17:05:03.000Z WARN consensusfsm/fsm.go:512 Not enough proposal endorsements {"ioAddr": "io15ccuntztkkuu0xnfhqf2qt8y28kpu0mnr65050", "height": 20618663, "epoch": 28777, "round": 2571, "proposer": "io1c5a8kv4nljt4dy2mnxk23rj0255a9x4uvn4x5m"}
2023-06-05T17:05:04.001Z WARN consensusfsm/fsm.go:547 Not enough lock endorsements {"ioAddr": "io15ccuntztkkuu0xnfhqf2qt8y28kpu0mnr65050", "height": 20618663, "epoch": 28777, "round": 2571, "proposer": "io1c5a8kv4nljt4dy2mnxk23rj0255a9x4uvn4x5m"}
2023-06-05T17:05:07.002Z WARN consensusfsm/fsm.go:476 didn't receive the proposed block before timeout {"ioAddr": "io15ccuntztkkuu0xnfhqf2qt8y28kpu0mnr65050", "height": 20618663, "epoch": 28777, "round": 2572, "proposer": "io1y4punwfvhxzee08a034922vwr48wz0p6ruy0ke"}
2023-06-05T17:05:08.001Z WARN consensusfsm/fsm.go:512 Not enough proposal endorsements {"ioAddr": "io15ccuntztkkuu0xnfhqf2qt8y28kpu0mnr65050", "height": 20618663, "epoch": 28777, "round": 2572, "proposer": "io1y4punwfvhxzee08a034922vwr48wz0p6ruy0ke"}
2023-06-05T17:05:09.001Z WARN consensusfsm/fsm.go:547 Not enough lock endorsements {"ioAddr": "io15ccuntztkkuu0xnfhqf2qt8y28kpu0mnr65050", "height": 20618663, "epoch": 28777, "round": 2572, "proposer": "io1y4punwfvhxzee08a034922vwr48wz0p6ruy0ke"}
2023-06-05T17:05:12.001Z WARN consensusfsm/fsm.go:476 didn't receive the proposed block before timeout {"ioAddr": "io15ccuntztkkuu0xnfhqf2qt8y28kpu0mnr65050", "height": 20618663, "epoch": 28777, "round": 2573, "proposer": "io1gn450vcrjkh7r35gcjyt93tp3u2dadz3k07wzw"}
2023-06-05T17:05:13.002Z WARN consensusfsm/fsm.go:512 Not enough proposal endorsements {"ioAddr": "io15ccuntztkkuu0xnfhqf2qt8y28kpu0mnr65050", "height": 20618663, "epoch": 28777, "round": 2573, "proposer": "io1gn450vcrjkh7r35gcjyt93tp3u2dadz3k07wzw"}
2023-06-05T17:05:14.002Z WARN consensusfsm/fsm.go:547 Not enough lock endorsements {"ioAddr": "io15ccuntztkkuu0xnfhqf2qt8y28kpu0mnr65050", "height": 20618663, "epoch": 28777, "round": 2573, "proposer": "io1gn450vcrjkh7r35gcjyt93tp3u2dadz3k07wzw"}
2023-06-05T17:05:18.003Z WARN consensusfsm/fsm.go:512 Not enough proposal endorsements {"ioAddr": "io15ccuntztkkuu0xnfhqf2qt8y28kpu0mnr65050", "height": 20618663, "epoch": 28777, "round": 2574, "proposer": "io15ccuntztkkuu0xnfhqf2qt8y28kpu0mnr65050"}
2023-06-05T17:05:19.004Z WARN consensusfsm/fsm.go:547 Not enough lock endorsements {"ioAddr": "io15ccuntztkkuu0xnfhqf2qt8y28kpu0mnr65050", "height": 20618663, "epoch": 28777, "round": 2574, "proposer": "io15ccuntztkkuu0xnfhqf2qt8y28kpu0mnr65050"}
2023-06-05T17:05:21.214Z INFO blocksync/blocksync.go:189 block sync intervals. {"ioAddr": "io15ccuntztkkuu0xnfhqf2qt8y28kpu0mnr65050", "intervals": [{"Start":20618663,"End":20618682},{"Start":20618683,"End":20618702},{"Start":20618703,"End":20618722},{"Start":20618723,"End":20618742},{"Start":20618743,"End":20618762},{"Start":20618763,"End":20618782},{"Start":20618783,"End":20618802},{"Start":20618803,"End":20618822},{"Start":20618823,"End":20618842},{"Start":20618843,"End":20618862}], "targetHeight": 20618862}
2023-06-05T17:05:21.402Z INFO chainservice/builder.go:491 Successfully committed block. {"ioAddr": "io15ccuntztkkuu0xnfhqf2qt8y28kpu0mnr65050", "height": 20618663}
2023-06-05T17:05:21.433Z INFO chainservice/builder.go:491 Successfully committed block. {"ioAddr": "io15ccuntztkkuu0xnfhqf2qt8y28kpu0mnr65050", "height": 20618664}
2023-06-05T17:05:21.464Z INFO chainservice/builder.go:491 Successfully committed block. {"ioAddr": "io15ccuntztkkuu0xnfhqf2qt8y28kpu0mnr65050", "height": 20618665}
2023-06-05T17:05:21.501Z INFO chainservice/builder.go:491 Successfully committed block. {"ioAddr": "io15ccuntztkkuu0xnfhqf2qt8y28kpu0mnr65050", "height": 20618666}
2023-06-05T17:05:21.544Z INFO chainservice/builder.go:491 Successfully committed block. {"ioAddr": "io15ccuntztkkuu0xnfhqf2qt8y28kpu0mnr65050", "height": 20618667}
```

Contributor guide

Open the contributing guide

Research direction

Start by tracing the consensusfsm/fsm.go timeout and endorsement paths alongside blocksync/blocksync.go, using the logged heights and targetHeight as the scenario. Check how chainservice/builder.go commits blocks during synchronization. Done means a node actively syncing to the latest tip continues syncing without entering PBFT consensus for an unsynchronized height.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
blockchain, distributed-systems
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.