[boskid][2.0.72] Barrels not inserted into assembler after empty barrel recipe is set via circuit

Bugs which we just recently fixed in our development version and will reach you in the next release.
js1
Inserter
Inserter
Posts: 49
Joined: Sun May 08, 2016 5:35 pm
Contact:

[boskid][2.0.72] Barrels not inserted into assembler after empty barrel recipe is set via circuit

Post by js1 »

Hello,

I have an issue when switching barrel filling/emptying recipes in an assembler using circuit network. If a recipe is switched from barrel emptying to barrel filling (and fluid has been previously in the assembler), the empty barrels are not inserted into the assembler by the associated inserter.

I encountered this issue while working on an "programmable" factory which would switch different fluids using barrels. Basically, I want to set assembler to fill barrels so that previous liquid could be taken out of the pipeline before I switch the assembler to emptying barrels with a new liquid that is going to be used.

I have attached the log and a small save, which demonstrates the issue. There is a clock switching between different barrel recipes and as you can observe, once we switch to barrel filling recipe, the empty barrels are not inserted from the chest. The issue does seem to happen even if just one liquid is used, but I would appreciate if it worked with multiple different liquids.

P.S. I had a lot of fun with the game, I wish you add some more control circuit stuff to 2.1, so we could control the factories even better.
Attachments
Bug-empty-fill-barrel-recipe-switch.zip
(3.82 MiB) Downloaded 7 times
factorio-current.log
(13.49 KiB) Downloaded 4 times
User avatar
boskid
Factorio Staff
Factorio Staff
Posts: 4301
Joined: Thu Dec 14, 2017 6:56 pm
Contact:

Re: [boskid][2.0.72] Barrels not inserted into assembler after empty barrel recipe is set via circuit

Post by boskid »

Thanks for the report. Issue is now fixed for the next release.

This is quite serious problem because it may cause a desync in MP. Core of the problem is that assembler reports as being full when it has a fluid product overload but fluid product overload is checked in a way that introduces a 1 tick delay: when changing recipe while an assembler had a fluid product overload to a different one, fluid gets cleared but inserter still considers that machine as being full and rejects inserting items. Problem is that a tick later that machine should no longer be considered full and should wake up the inserter however it fails to do both of those which leads to problems.
Post Reply

Return to “Resolved for the next release”