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

This subforum contains all the issues which we already resolved.
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 37 times
factorio-current.log
(13.49 KiB) Downloaded 25 times
User avatar
boskid
Factorio Staff
Factorio Staff
Posts: 4372
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 Problems and Bugs”