What did you do?
I have two pumps feeding into a pipeline, one pump feeds crude oil and one pump feeds water, and then this pipeline connected to both inputs of an oil refinery with Adv Oil Processing recipe set.There's a circuit connecting the oil refinery, a pipe and both pumps with the following circuit settings:
- Oil refinery: "Output: Read contents" is the only thing enabled
- Pipe: "Output: Mode of operation" is set to "Read pipeline contents"
- Right Pump: "Input: Enable If" condition is set to "Crude-oil < 250"
- Left Pump: "Input: Enable If" condition is set to "Water < 125"
Blueprint:
What happened?
Both pumps activate (since the pipe and oil refineries are initially empty) as expected.In this case, water "wins" and takes the pipeline and flows into the oil refinery. Different runs might have oil "win" first instead (this is expected).
240 units of water in total flows thru the left pump and into the pipeline/oil refinery:
150 units of water flow into the oil refinery filling up the input buffer:
90 units of water are left sitting on the pipeline, with nowhere to go:
400 units of crude oil are stuck inside the right pump: The oil refinery cannot begin crafting due to lack of crude oil, crude oil cannot reach the oil refinery due to water in pipeline, water in pipeline cannot go away since input buffer in oil refinery is full, input buffer cannot empty out because oil refinery cannot craft. IE. it's deadlocked.
What did you expect to happen instead?
I expected the pumps to be limited by the circuit conditions I set, maybe going a bit over the limit but not overshooting the target amount by 90 or even 400.With the Factorio as it currently stands (as of version 2.1.12) it is impossible to set circuit conditions such that this setup can work.
The crux of the problem is the impossibility of accounting for the contents inside the fluid pump itself. So each pump might overshoot the target fluid amounts by 1~400 fluid units, randomly.
Does it happen always, once, or sometimes?
That's the weird part, with a small setup like this then it will certainly happen nearly always. But scaling the same setup to 8~10 oil refineries then it might never happen (assuming the circuit conditions are set just right).It just feels wrong there's a random amount of fluid inside each pump that's invisible to the circuit network, even thru the "Read pipeline contents" feature. Pumps are required to control fluid flow thru pipelines, so this source of randomness cannot be easily avoided either.


