Skip to content

Conversation

@lexnv
Copy link
Contributor

@lexnv lexnv commented Oct 29, 2025

This PR adjusts the block authoring to stop producing blocks 1 second before the scheduled slot change.
This introduces a safety buffer to prevent blocks from being authored too late for inclusion.

  • 2s blocks / 3 cores: The authoring duration of the last block is reduced from 2s to 1s.
  • 500ms blocks / 12 cores: The authoring duration cannot be reduced past 500ms, therefore the last two blocks are no longer authored

Testing Done

Tested on top of:

3 cores 2s blocks

aura::cumulus: [Parachain] Adjusting authoring duration for slot. authoring_duration=2s duration=1.987s last_reported_slot=Some(Slot(293723040)) next_slot=Slot(293723040) next_duration_change=5.987s next_slot_change=Slot(293723041)
aura::cumulus: [Parachain] Adjusted proposal duration. duration=Some(1.987s)

aura::cumulus: [Parachain] Adjusting authoring duration for slot. authoring_duration=2s duration=1.991s last_reported_slot=Some(Slot(293723040)) next_slot=Slot(293723040) next_duration_change=3.991s next_slot_change=Slot(293723041)
aura::cumulus: [Parachain] Adjusted proposal duration. duration=Some(1.991s)

aura::cumulus: [Parachain] Adjusting authoring duration for slot. authoring_duration=2s duration=1.99s last_reported_slot=Some(Slot(293723040)) next_slot=Slot(293723041) next_duration_change=1.99s next_slot_change=Slot(293723041)
aura::cumulus: [Parachain] Adjusted proposal duration. duration=Some(990ms)

12 cores 500ms blocks

aura::cumulus: [Parachain] Adjusting authoring duration for slot. authoring_duration=2s duration=494ms last_reported_slot=Some(Slot(293724134)) next_slot=Slot(293724134) next_duration_change=1.494s next_slot_change=Slot(293724135) deadline=494ms
aura::cumulus: [Parachain] Adjusted proposal duration. duration=Some(494ms)

aura::cumulus: [Parachain] Adjusting authoring duration for slot. authoring_duration=2s duration=493ms last_reported_slot=Some(Slot(293724134)) next_slot=Slot(293724134) next_duration_change=993ms next_slot_change=Slot(293724135) deadline=0ns
aura::cumulus: [Parachain] Not enough time left in the slot to adjust authoring duration. Skipping block production for the slot. next_duration_change=993ms next_slot_change=Slot(293724135)
aura::cumulus: [Parachain] Adjusted proposal duration. duration=None
aura::cumulus: [Parachain] Not building block due to insufficient authoring duration

aura::cumulus: [Parachain] Adjusting authoring duration for slot. authoring_duration=2s duration=494ms last_reported_slot=Some(Slot(293724136)) next_slot=Slot(293724137) next_duration_change=494ms next_slot_change=Slot(293724137) deadline=0ns
aura::cumulus: [Parachain] Not enough time left in the slot to adjust authoring duration. Skipping block production for the slot. next_duration_change=494ms next_slot_change=Slot(293724137)
aura::cumulus: [Parachain] Adjusted proposal duration. duration=None
aura::cumulus: [Parachain] Not building block due to insufficient authoring duration

Part of: #9848

lexnv and others added 30 commits September 30, 2025 11:51
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
…t > 1

Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
lexnv added 2 commits November 7, 2025 16:05
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
@lexnv
Copy link
Contributor Author

lexnv commented Nov 13, 2025

Testing Results

This PR was tested on versi-net with 2 collators and 3 cores. Unfortunately, versi-net wouldn't onboard more than 4 validators.

The following logs are provided in reverse order.

2 collators 3 cores

2025-11-13 08:59:59.004 DEBUG tokio-runtime-worker aura::cumulus: [Parachain] Adjusted proposal duration. duration=Some(995.371329ms)
2025-11-13 08:59:59.004 DEBUG tokio-runtime-worker aura::cumulus: [Parachain] Adjusting authoring duration for slot. authoring_duration=2s duration=1.996s next_block_slot=Slot(293837400) duration_until_next_slot=1.995371329s next_slot=Slot(293837400) duration_until_deadline=995.371329ms different_authors=true
2025-11-13 08:59:57.003 DEBUG tokio-runtime-worker aura::cumulus: [Parachain] Adjusted proposal duration. duration=Some(1.997s)
2025-11-13 08:59:57.003 DEBUG tokio-runtime-worker aura::cumulus: [Parachain] Adjusting authoring duration for slot. authoring_duration=2s duration=1.997s next_block_slot=Slot(293837399) duration_until_next_slot=3.99641377s next_slot=Slot(293837400) duration_until_deadline=2.99641377s different_authors=true
2025-11-13 08:59:55.005 DEBUG tokio-runtime-worker aura::cumulus: [Parachain] Adjusted proposal duration. duration=Some(1.995s)
2025-11-13 08:59:55.005 DEBUG tokio-runtime-worker aura::cumulus: [Parachain] Adjusting authoring duration for slot. authoring_duration=2s duration=1.995s next_block_slot=Slot(293837399) duration_until_next_slot=5.99468483s next_slot=Slot(293837400) duration_until_deadline=4.99468483s different_authors=true

The authoring duration got reduced by 1s in the final block.

No cores assigned

2025-11-11 16:00:01.004 DEBUG tokio-runtime-worker aura::cumulus: [Parachain] Adjusting authoring duration for slot. authoring_duration=2s duration=5.996s next_block_slot=Slot(293812801) duration_until_next_slot=5.995267836s next_slot=Slot(293812801) duration_until_deadline=4.995267836s different_authors=true
2025-11-11 15:59:49.003 DEBUG tokio-runtime-worker aura::cumulus: [Parachain] Adjusted proposal duration. duration=Some(2s)
2025-11-11 15:59:49.003 DEBUG tokio-runtime-worker aura::cumulus: [Parachain] Adjusting authoring duration for slot. authoring_duration=2s duration=5.997s next_block_slot=Slot(293812799) duration_until_next_slot=5.996182058s next_slot=Slot(293812799) duration_until_deadline=4.996182058s different_authors=true
2025-11-11 15:59:37.004 DEBUG tokio-runtime-worker aura::cumulus: [Parachain] Adjusted proposal duration. duration=Some(2s)
2025-11-11 15:59:37.004 DEBUG tokio-runtime-worker aura::cumulus: [Parachain] Adjusting authoring duration for slot. authoring_duration=2s duration=5.996s next_block_slot=Slot(293812797) duration_until_next_slot=5.995842363s next_slot=Slot(293812797) duration_until_deadline=4.995842363s different_authors=true

In this case, the authoring duration remains unchanged. As the deadline until the next block is too far into the future.

1 collator

2025-11-11 15:23:17.003 DEBUG tokio-runtime-worker aura::cumulus: [Parachain] Adjusting authoring duration for slot. authoring_duration=2s duration=1.997s next_block_slot=Slot(293812433) duration_until_next_slot=1.996392782s next_slot=Slot(293812433) duration_until_deadline=996.392782ms different_authors=false
2025-11-11 15:23:15.003 DEBUG tokio-runtime-worker aura::cumulus: [Parachain] Adjusted proposal duration. duration=Some(1.997s)
2025-11-11 15:23:15.003 DEBUG tokio-runtime-worker aura::cumulus: [Parachain] Adjusting authoring duration for slot. authoring_duration=2s duration=1.997s next_block_slot=Slot(293812432) duration_until_next_slot=3.996247242s next_slot=Slot(293812433) duration_until_deadline=2.996247242s different_authors=false
2025-11-11 15:23:13.004 DEBUG tokio-runtime-worker aura::cumulus: [Parachain] Adjusted proposal duration. duration=Some(1.996s)
2025-11-11 15:23:13.004 DEBUG tokio-runtime-worker aura::cumulus: [Parachain] Adjusting authoring duration for slot. authoring_duration=2s duration=1.996s next_block_slot=Slot(293812432) duration_until_next_slot=5.995091952s next_slot=Slot(293812433) duration_until_deadline=4.995091952s different_authors=false
2025-11-11 15:23:11.003 DEBUG tokio-runtime-worker aura::cumulus: [Parachain] Adjusted proposal duration. duration=Some(1.997s)

Although the imposed deadline is expected to arrive in 1 second, the authoring duration is not adjusted and remains stable at ~2s.

Copy link
Contributor

@sandreim sandreim left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚀

lexnv and others added 2 commits November 19, 2025 12:40
Co-authored-by: Andrei Sandu <54316454+sandreim@users.noreply.github.com>
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
@lexnv lexnv changed the base branch from lexnv/es-westend to master November 19, 2025 10:48
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
@lexnv lexnv added this pull request to the merge queue Nov 19, 2025
Merged via the queue into master with commit 77c0125 Nov 19, 2025
255 of 260 checks passed
@lexnv lexnv deleted the lexnv/adjust-aura-auth-duration branch November 19, 2025 15:20
@pandres95
Copy link
Contributor

Do you think it's possible to backport this to stable2512?

@lexnv
Copy link
Contributor Author

lexnv commented Nov 25, 2025

@pandres95 Of course, sounds like a plan

@lexnv lexnv added A4-backport-stable2509 Pull request must be backported to the stable2509 release branch A4-backport-stable2512 Pull request must be backported to the stable2512 release branch labels Nov 25, 2025
paritytech-release-backport-bot bot pushed a commit that referenced this pull request Nov 25, 2025
…#10154)

This PR adjusts the block authoring to stop producing blocks 1 second
before the scheduled slot change.
This introduces a safety buffer to prevent blocks from being authored
too late for inclusion.

- 2s blocks / 3 cores: The authoring duration of the last block is
reduced from 2s to 1s.
- 500ms blocks / 12 cores: The authoring duration cannot be reduced past
500ms, therefore the last two blocks are no longer authored

### Testing Done

Tested on top of:
- #9880

### 3 cores 2s blocks

```
aura::cumulus: [Parachain] Adjusting authoring duration for slot. authoring_duration=2s duration=1.987s last_reported_slot=Some(Slot(293723040)) next_slot=Slot(293723040) next_duration_change=5.987s next_slot_change=Slot(293723041)
aura::cumulus: [Parachain] Adjusted proposal duration. duration=Some(1.987s)

aura::cumulus: [Parachain] Adjusting authoring duration for slot. authoring_duration=2s duration=1.991s last_reported_slot=Some(Slot(293723040)) next_slot=Slot(293723040) next_duration_change=3.991s next_slot_change=Slot(293723041)
aura::cumulus: [Parachain] Adjusted proposal duration. duration=Some(1.991s)

aura::cumulus: [Parachain] Adjusting authoring duration for slot. authoring_duration=2s duration=1.99s last_reported_slot=Some(Slot(293723040)) next_slot=Slot(293723041) next_duration_change=1.99s next_slot_change=Slot(293723041)
aura::cumulus: [Parachain] Adjusted proposal duration. duration=Some(990ms)
```

### 12 cores 500ms blocks

```
aura::cumulus: [Parachain] Adjusting authoring duration for slot. authoring_duration=2s duration=494ms last_reported_slot=Some(Slot(293724134)) next_slot=Slot(293724134) next_duration_change=1.494s next_slot_change=Slot(293724135) deadline=494ms
aura::cumulus: [Parachain] Adjusted proposal duration. duration=Some(494ms)

aura::cumulus: [Parachain] Adjusting authoring duration for slot. authoring_duration=2s duration=493ms last_reported_slot=Some(Slot(293724134)) next_slot=Slot(293724134) next_duration_change=993ms next_slot_change=Slot(293724135) deadline=0ns
aura::cumulus: [Parachain] Not enough time left in the slot to adjust authoring duration. Skipping block production for the slot. next_duration_change=993ms next_slot_change=Slot(293724135)
aura::cumulus: [Parachain] Adjusted proposal duration. duration=None
aura::cumulus: [Parachain] Not building block due to insufficient authoring duration

aura::cumulus: [Parachain] Adjusting authoring duration for slot. authoring_duration=2s duration=494ms last_reported_slot=Some(Slot(293724136)) next_slot=Slot(293724137) next_duration_change=494ms next_slot_change=Slot(293724137) deadline=0ns
aura::cumulus: [Parachain] Not enough time left in the slot to adjust authoring duration. Skipping block production for the slot. next_duration_change=494ms next_slot_change=Slot(293724137)
aura::cumulus: [Parachain] Adjusted proposal duration. duration=None
aura::cumulus: [Parachain] Not building block due to insufficient authoring duration
```

Part of: #9848

---------

Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: eduardspa <eduard@parity.io>
Co-authored-by: Sebastian Kunert <skunert49@gmail.com>
Co-authored-by: Andrei Sandu <54316454+sandreim@users.noreply.github.com>
(cherry picked from commit 77c0125)
@paritytech-release-backport-bot

paritytech-release-backport-bot bot pushed a commit that referenced this pull request Nov 25, 2025
…#10154)

This PR adjusts the block authoring to stop producing blocks 1 second
before the scheduled slot change.
This introduces a safety buffer to prevent blocks from being authored
too late for inclusion.

- 2s blocks / 3 cores: The authoring duration of the last block is
reduced from 2s to 1s.
- 500ms blocks / 12 cores: The authoring duration cannot be reduced past
500ms, therefore the last two blocks are no longer authored

### Testing Done

Tested on top of:
- #9880

### 3 cores 2s blocks

```
aura::cumulus: [Parachain] Adjusting authoring duration for slot. authoring_duration=2s duration=1.987s last_reported_slot=Some(Slot(293723040)) next_slot=Slot(293723040) next_duration_change=5.987s next_slot_change=Slot(293723041)
aura::cumulus: [Parachain] Adjusted proposal duration. duration=Some(1.987s)

aura::cumulus: [Parachain] Adjusting authoring duration for slot. authoring_duration=2s duration=1.991s last_reported_slot=Some(Slot(293723040)) next_slot=Slot(293723040) next_duration_change=3.991s next_slot_change=Slot(293723041)
aura::cumulus: [Parachain] Adjusted proposal duration. duration=Some(1.991s)

aura::cumulus: [Parachain] Adjusting authoring duration for slot. authoring_duration=2s duration=1.99s last_reported_slot=Some(Slot(293723040)) next_slot=Slot(293723041) next_duration_change=1.99s next_slot_change=Slot(293723041)
aura::cumulus: [Parachain] Adjusted proposal duration. duration=Some(990ms)
```

### 12 cores 500ms blocks

```
aura::cumulus: [Parachain] Adjusting authoring duration for slot. authoring_duration=2s duration=494ms last_reported_slot=Some(Slot(293724134)) next_slot=Slot(293724134) next_duration_change=1.494s next_slot_change=Slot(293724135) deadline=494ms
aura::cumulus: [Parachain] Adjusted proposal duration. duration=Some(494ms)

aura::cumulus: [Parachain] Adjusting authoring duration for slot. authoring_duration=2s duration=493ms last_reported_slot=Some(Slot(293724134)) next_slot=Slot(293724134) next_duration_change=993ms next_slot_change=Slot(293724135) deadline=0ns
aura::cumulus: [Parachain] Not enough time left in the slot to adjust authoring duration. Skipping block production for the slot. next_duration_change=993ms next_slot_change=Slot(293724135)
aura::cumulus: [Parachain] Adjusted proposal duration. duration=None
aura::cumulus: [Parachain] Not building block due to insufficient authoring duration

aura::cumulus: [Parachain] Adjusting authoring duration for slot. authoring_duration=2s duration=494ms last_reported_slot=Some(Slot(293724136)) next_slot=Slot(293724137) next_duration_change=494ms next_slot_change=Slot(293724137) deadline=0ns
aura::cumulus: [Parachain] Not enough time left in the slot to adjust authoring duration. Skipping block production for the slot. next_duration_change=494ms next_slot_change=Slot(293724137)
aura::cumulus: [Parachain] Adjusted proposal duration. duration=None
aura::cumulus: [Parachain] Not building block due to insufficient authoring duration
```

Part of: #9848

---------

Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: eduardspa <eduard@parity.io>
Co-authored-by: Sebastian Kunert <skunert49@gmail.com>
Co-authored-by: Andrei Sandu <54316454+sandreim@users.noreply.github.com>
(cherry picked from commit 77c0125)
@paritytech-release-backport-bot

EgorPopelyaev added a commit that referenced this pull request Nov 25, 2025
…ion of the last produced block (#10406)

Backport #10154 into `stable2509` from lexnv.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Co-authored-by: Alexandru Vasile <60601340+lexnv@users.noreply.github.com>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: eduardspa <eduard@parity.io>
Co-authored-by: Sebastian Kunert <skunert49@gmail.com>
Co-authored-by: Andrei Sandu <54316454+sandreim@users.noreply.github.com>
Co-authored-by: Egor_P <egor@parity.io>
EgorPopelyaev pushed a commit that referenced this pull request Nov 25, 2025
…ion of the last produced block (#10407)

Backport #10154 into `stable2512` from lexnv.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Co-authored-by: Alexandru Vasile <60601340+lexnv@users.noreply.github.com>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: eduardspa <eduard@parity.io>
Co-authored-by: Sebastian Kunert <skunert49@gmail.com>
Co-authored-by: Andrei Sandu <54316454+sandreim@users.noreply.github.com>
smohan-dw pushed a commit to dhiway/sdk that referenced this pull request Nov 28, 2025
…ring duration of the last produced block (paritytech#10406)

Backport paritytech#10154 into `stable2509` from lexnv.

See the
[documentation](https://github.com/paritytech/polkadot-sdk/blob/master/docs/BACKPORT.md)
on how to use this bot.

<!--
  # To be used by other automation, do not modify:
  original-pr-number: #${pull_number}
-->

---------

Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Co-authored-by: Alexandru Vasile <60601340+lexnv@users.noreply.github.com>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: eduardspa <eduard@parity.io>
Co-authored-by: Sebastian Kunert <skunert49@gmail.com>
Co-authored-by: Andrei Sandu <54316454+sandreim@users.noreply.github.com>
Co-authored-by: Egor_P <egor@parity.io>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A4-backport-stable2509 Pull request must be backported to the stable2509 release branch A4-backport-stable2512 Pull request must be backported to the stable2512 release branch T0-node This PR/Issue is related to the topic “node”.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants