RS485 / LogisticsPipes

The RS485 take on LogisticsPipes -- ESTḌ 2012
https://rs485.network
Other
240 stars 127 forks source link

Better load balancing with providers #671

Open Omega-Haxors opened 9 years ago

Omega-Haxors commented 9 years ago

I (against my better sense) thought it was a good idea to request over 3 million cobblestone into another mod's autocrafter with the use of a Mk. II Request pipe. Sure it worked out pretty well, but unfortunately it seems to have caused an unexpected issue with the rest of my network.

You see, sometimes when I try to request things, it will deduct the items properly from the menu but they never come. Checking the inventory source shows that the items are still there.

It may have something to do with the fact that everything is funneled through a single ME interface, but other than that I have no clue.

And now I have to manually withdrawal items from my ME system because there doesn't seem to be an cancel button for my absurdly (and admiringly foolishly) large request. I COULD wait it out, but honestly at 3 million, it's going to be a few days before that finishes.

SonOfTheStars commented 9 years ago

Next time, use an MK3 :D

Omega-Haxors commented 9 years ago

I just checked... It's actually 200 million.

This is going to take a few years...

SonOfTheStars commented 9 years ago

Seems like your "Other Mods Autocrafter" is incredibly slow...

AartBluestoke commented 9 years ago

breaking a crafting pipe drops all requests going to it. -- it's a localised emergency fix ;)

On Mon, May 4, 2015 at 9:27 PM, Bitterholz notifications@github.com wrote:

Seems like your "Other Mods Autocrafter" is incredibly slow...

— Reply to this email directly or view it on GitHub https://github.com/RS485/LogisticsPipes/issues/671#issuecomment-98681479 .

“Getting information off the Internet is like taking a drink from a fire hydrant.” – Mitchell Kapor

bziemons commented 9 years ago

It is intended that provider pipes (e.g. on an ME interface) work serialized, because it's logical. As long as one request task is running on a provider pipe/module it does have to finish that task before beginning any new task. Same goes for any other pipe/module basically.

SonOfTheStars commented 9 years ago

@theZorro266 I think you meant Synchronised, And jes that the best way of doing it. Otherwhise you would have different request Interfere with each other. Containers would be Drained when there is still a request going, wich would cause huge Problems.

bziemons commented 9 years ago

No, I meant serialized as opposed to work on multiple tasks at the same time which is similar to parallel work. I do not say that it is the best way of doing it, but I say that it is the way that we do it now.

SonOfTheStars commented 9 years ago

Thats actually syncronized, Just heared that Today in my Programming Tutorium at University.

And Yes its actually the best way to do it, It would create aborted Requests and unfinishable Crafting/endless wait if the Provided ressource Operations weren´t Synchronized. Wich is why having the Provider locked if a request is going is the best way.

bziemons commented 9 years ago

I am not going to discuss why I mean and say serialized, but for the sake of the issue I do not think that it is the best possible way it works right now. Not saying that we should parallelize it, but instead reorder by importance when a new request comes in.. Like a CPU scheduler does for cores basically