Skip to content

relay_progress() does not honor progress updates with amount = 0 #126

Open
@mlell

Description

@mlell

The example is copied from 716d2e:incl/progress_aggregator.R, but with the wrong amount of steps corrected from 4 to 8 (1: top-level progress(), 2-3: slow_sum(1:2), 4-7: slow_sum(1:4), 8: second progress()`:

library(progressr)
message("progress_aggregator() ...")

with_progress({
  progress <- progressor(steps = 8L)
  relay_progress <- progress_aggregator(progress)
  progress()
  relay_progress(slow_sum(1:2))
  relay_progress(slow_sum(1:4))
  Sys.sleep(3)
  progress()
})

message("progress_aggregator() ... done")

Expected result: The progress bar reaches 100% after the progress() call in line 11.
Actual result: The progress bar fills quicky, before the second slow_sum() even starts.

Reason: Rows like this in slow_sum()

https://github.com/HenrikBengtsson/progressr/blob/716d2e750a7667303244f91736f0f8315577e25a/R/slow_sum.R#L24

...together with this line in R/progress_aggregator.R:

https://github.com/HenrikBengtsson/progressr/blob/716d2e750a7667303244f91736f0f8315577e25a/R/progress_aggregator.R#L34

The progress call in slow_sum() is progress(amount = 0) which is captured by the progress aggegator, but that re-emits a progression progress(child = p), omitting the amount= option, which then defaults to 1. In fact, no property of the initial progression condition is relayed. The initial progression is just included as an additional option called child= but I see that is handled nowhere.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions