Closed
Description
As @thigger noted in #202, an arrival may end up in two queues (potentially, many more) due to preemption.
For example, this crashes the session: the arrival is dequeued in a resource while enqueued in a previous one.
library(simmer)
lprio <- trajectory() %>%
seize("one") %>% # "one" seized
seize("two") %>% # enqueued in "two"
timeout(10) %>%
release_all()
hprio <- trajectory() %>%
seize("one") %>% # preempts lprio in "one"
set_capacity("two", 1) %>% # dequeues lprio in "two" -> crash
timeout(100) %>%
release_all()
simmer(verbose=TRUE) %>%
add_resource("one", 1, preemptive=TRUE) %>%
add_resource("two", 0) %>%
add_generator("lprio", lprio, at(0), priority=0) %>%
add_generator("hprio", hprio, at(1), priority=1) %>%
run()