[racket-dev] Multiple 'raco make' processes
If I have multiple instances of raco make running and some of the files they are checking/rebuilding are shared across the instances... what happens? Does raco make have lock to ensure no contention? Or does each process potentially redo some work? -- Dan Liebgold[dan.liebg...@gmail.com] _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] Multiple 'raco make' processes
I think they can stomp on each other and you can get inconsistent results, theoretically. Robby On Tuesday, December 9, 2014, Dan Liebgold wrote: > If I have multiple instances of raco make running and some of the files > they are checking/rebuilding are shared across the instances... what > happens? Does raco make have lock to ensure no contention? Or does each > process potentially redo some work? > > -- > Dan Liebgold[dan.liebg...@gmail.com > ] > _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] Multiple 'raco make' processes
Ah sorry: meant to add: did you try the -j flag? On Tuesday, December 9, 2014, Robby Findler wrote: > I think they can stomp on each other and you can get inconsistent results, > theoretically. > > Robby > > On Tuesday, December 9, 2014, Dan Liebgold > wrote: > >> If I have multiple instances of raco make running and some of the files >> they are checking/rebuilding are shared across the instances... what >> happens? Does raco make have lock to ensure no contention? Or does each >> process potentially redo some work? >> >> -- >> Dan Liebgold[dan.liebg...@gmail.com] >> > _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] Multiple 'raco make' processes
If the multiple 'raco make's would produce the same results, then there should be no inconsistency, just duplicate work, right? And my use case is a bit different... I need to spawn the multiple 'raco makes', rather than have raco make spawn multiple racket instances (via the -j flag). Although this particular setup will bear some examination. On Tue, Dec 9, 2014 at 11:47 AM, Robby Findler wrote: > Ah sorry: meant to add: did you try the -j flag? > > > On Tuesday, December 9, 2014, Robby Findler > wrote: > >> I think they can stomp on each other and you can get inconsistent >> results, theoretically. >> >> Robby >> >> On Tuesday, December 9, 2014, Dan Liebgold >> wrote: >> >>> If I have multiple instances of raco make running and some of the files >>> they are checking/rebuilding are shared across the instances... what >>> happens? Does raco make have lock to ensure no contention? Or does each >>> process potentially redo some work? >>> >>> -- >>> Dan Liebgold[dan.liebg...@gmail.com] >>> >> -- Dan Liebgold[dan.liebg...@gmail.com] _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] Multiple 'raco make' processes
Unfortunately, the bytecode compiler is not completely deterministic. Generating the same ".zo" file from the same source is likely to produce different bytes each time. The root causes are various counters and hash orders, and I hope to fix that eventually. For now, since the generated bytecode is different, there can be inconsistencies instead of just duplicated work. At Tue, 9 Dec 2014 11:54:16 -0800, Dan Liebgold wrote: > If the multiple 'raco make's would produce the same results, then there > should be no inconsistency, just duplicate work, right? > > And my use case is a bit different... I need to spawn the multiple 'raco > makes', rather than have raco make spawn multiple racket instances (via the > -j flag). Although this particular setup will bear some examination. > > On Tue, Dec 9, 2014 at 11:47 AM, Robby Findler > wrote: > > > Ah sorry: meant to add: did you try the -j flag? > > > > > > On Tuesday, December 9, 2014, Robby Findler > > wrote: > > > >> I think they can stomp on each other and you can get inconsistent > >> results, theoretically. > >> > >> Robby > >> > >> On Tuesday, December 9, 2014, Dan Liebgold > >> wrote: > >> > >>> If I have multiple instances of raco make running and some of the files > >>> they are checking/rebuilding are shared across the instances... what > >>> happens? Does raco make have lock to ensure no contention? Or does each > >>> process potentially redo some work? > >>> > >>> -- > >>> Dan Liebgold[dan.liebg...@gmail.com] > >>> > >> > > > -- > Dan Liebgold[dan.liebg...@gmail.com] > _ > Racket Developers list: > http://lists.racket-lang.org/dev _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] Multiple 'raco make' processes
Specifically, you can get errors like "Called export 72 and expected set->list but got list->set. Chaos!" Jay On Tue, Dec 9, 2014 at 3:09 PM, Matthew Flatt wrote: > Unfortunately, the bytecode compiler is not completely deterministic. > Generating the same ".zo" file from the same source is likely to > produce different bytes each time. The root causes are various counters > and hash orders, and I hope to fix that eventually. For now, since the > generated bytecode is different, there can be inconsistencies instead > of just duplicated work. > > At Tue, 9 Dec 2014 11:54:16 -0800, Dan Liebgold wrote: >> If the multiple 'raco make's would produce the same results, then there >> should be no inconsistency, just duplicate work, right? >> >> And my use case is a bit different... I need to spawn the multiple 'raco >> makes', rather than have raco make spawn multiple racket instances (via the >> -j flag). Although this particular setup will bear some examination. >> >> On Tue, Dec 9, 2014 at 11:47 AM, Robby Findler >> wrote: >> >> > Ah sorry: meant to add: did you try the -j flag? >> > >> > >> > On Tuesday, December 9, 2014, Robby Findler >> > wrote: >> > >> >> I think they can stomp on each other and you can get inconsistent >> >> results, theoretically. >> >> >> >> Robby >> >> >> >> On Tuesday, December 9, 2014, Dan Liebgold >> >> wrote: >> >> >> >>> If I have multiple instances of raco make running and some of the files >> >>> they are checking/rebuilding are shared across the instances... what >> >>> happens? Does raco make have lock to ensure no contention? Or does each >> >>> process potentially redo some work? >> >>> >> >>> -- >> >>> Dan Liebgold[dan.liebg...@gmail.com] >> >>> >> >> >> >> >> -- >> Dan Liebgold[dan.liebg...@gmail.com] >> _ >> Racket Developers list: >> http://lists.racket-lang.org/dev > _ > Racket Developers list: > http://lists.racket-lang.org/dev -- Jay McCarthy http://jeapostrophe.github.io "Wherefore, be not weary in well-doing, for ye are laying the foundation of a great work. And out of small things proceedeth that which is great." - D&C 64:33 _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] Multiple 'raco make' processes
I think even stranger things can happen because of race-conditions at the filesystem level (altho we could probably protect against that if we wanted). Robby On Tue, Dec 9, 2014 at 6:22 PM, Jay McCarthy wrote: > Specifically, you can get errors like "Called export 72 and expected > set->list but got list->set. Chaos!" > > Jay > > On Tue, Dec 9, 2014 at 3:09 PM, Matthew Flatt wrote: >> Unfortunately, the bytecode compiler is not completely deterministic. >> Generating the same ".zo" file from the same source is likely to >> produce different bytes each time. The root causes are various counters >> and hash orders, and I hope to fix that eventually. For now, since the >> generated bytecode is different, there can be inconsistencies instead >> of just duplicated work. >> >> At Tue, 9 Dec 2014 11:54:16 -0800, Dan Liebgold wrote: >>> If the multiple 'raco make's would produce the same results, then there >>> should be no inconsistency, just duplicate work, right? >>> >>> And my use case is a bit different... I need to spawn the multiple 'raco >>> makes', rather than have raco make spawn multiple racket instances (via the >>> -j flag). Although this particular setup will bear some examination. >>> >>> On Tue, Dec 9, 2014 at 11:47 AM, Robby Findler >>> wrote: >>> >>> > Ah sorry: meant to add: did you try the -j flag? >>> > >>> > >>> > On Tuesday, December 9, 2014, Robby Findler >>> > wrote: >>> > >>> >> I think they can stomp on each other and you can get inconsistent >>> >> results, theoretically. >>> >> >>> >> Robby >>> >> >>> >> On Tuesday, December 9, 2014, Dan Liebgold >>> >> wrote: >>> >> >>> >>> If I have multiple instances of raco make running and some of the files >>> >>> they are checking/rebuilding are shared across the instances... what >>> >>> happens? Does raco make have lock to ensure no contention? Or does each >>> >>> process potentially redo some work? >>> >>> >>> >>> -- >>> >>> Dan Liebgold[dan.liebg...@gmail.com] >>> >>> >>> >> >>> >>> >>> -- >>> Dan Liebgold[dan.liebg...@gmail.com] >>> _ >>> Racket Developers list: >>> http://lists.racket-lang.org/dev >> _ >> Racket Developers list: >> http://lists.racket-lang.org/dev > > > > -- > Jay McCarthy > http://jeapostrophe.github.io > >"Wherefore, be not weary in well-doing, > for ye are laying the foundation of a great work. > And out of small things proceedeth that which is great." > - D&C 64:33 > _ > Racket Developers list: > http://lists.racket-lang.org/dev _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] Multiple 'raco make' processes
We do protect against those kinds of problems (even on Windows, where it isn't trivial). At Tue, 9 Dec 2014 19:00:09 -0600, Robby Findler wrote: > I think even stranger things can happen because of race-conditions at > the filesystem level (altho we could probably protect against that if > we wanted). > > Robby > > > On Tue, Dec 9, 2014 at 6:22 PM, Jay McCarthy wrote: > > Specifically, you can get errors like "Called export 72 and expected > > set->list but got list->set. Chaos!" > > > > Jay > > > > On Tue, Dec 9, 2014 at 3:09 PM, Matthew Flatt wrote: > >> Unfortunately, the bytecode compiler is not completely deterministic. > >> Generating the same ".zo" file from the same source is likely to > >> produce different bytes each time. The root causes are various counters > >> and hash orders, and I hope to fix that eventually. For now, since the > >> generated bytecode is different, there can be inconsistencies instead > >> of just duplicated work. > >> > >> At Tue, 9 Dec 2014 11:54:16 -0800, Dan Liebgold wrote: > >>> If the multiple 'raco make's would produce the same results, then there > >>> should be no inconsistency, just duplicate work, right? > >>> > >>> And my use case is a bit different... I need to spawn the multiple 'raco > >>> makes', rather than have raco make spawn multiple racket instances (via > >>> the > >>> -j flag). Although this particular setup will bear some examination. > >>> > >>> On Tue, Dec 9, 2014 at 11:47 AM, Robby Findler > >>> > >>> wrote: > >>> > >>> > Ah sorry: meant to add: did you try the -j flag? > >>> > > >>> > > >>> > On Tuesday, December 9, 2014, Robby Findler > >>> > > >>> > wrote: > >>> > > >>> >> I think they can stomp on each other and you can get inconsistent > >>> >> results, theoretically. > >>> >> > >>> >> Robby > >>> >> > >>> >> On Tuesday, December 9, 2014, Dan Liebgold > >>> >> wrote: > >>> >> > >>> >>> If I have multiple instances of raco make running and some of the > >>> >>> files > >>> >>> they are checking/rebuilding are shared across the instances... what > >>> >>> happens? Does raco make have lock to ensure no contention? Or does > >>> >>> each > >>> >>> process potentially redo some work? > >>> >>> > >>> >>> -- > >>> >>> Dan Liebgold[dan.liebg...@gmail.com] > >>> >>> > >>> >> > >>> > >>> > >>> -- > >>> Dan Liebgold[dan.liebg...@gmail.com] > >>> _ > >>> Racket Developers list: > >>> http://lists.racket-lang.org/dev > >> _ > >> Racket Developers list: > >> http://lists.racket-lang.org/dev > > > > > > > > -- > > Jay McCarthy > > http://jeapostrophe.github.io > > > >"Wherefore, be not weary in well-doing, > > for ye are laying the foundation of a great work. > > And out of small things proceedeth that which is great." > > - D&C 64:33 > > _ > > Racket Developers list: > > http://lists.racket-lang.org/dev _ Racket Developers list: http://lists.racket-lang.org/dev