On Tue, Oct 14, 2014 at 07:19:10AM +0200, Thierry Goubier wrote:
> Hi Dave,
> 
> took me a while to do some testing. It seems there is an issue, but I 
> couldn't find out where. First, the data:
> 
> Loading a package from a local gitfiletree repository (get from the 
> command a zipped git archive containing the package) :
> 
> 4.5.11, 4.6.8: 2132 msec.
> 4.5.12, 4.6.9: 50847 msec.
> 
> I tried to rewrite the main command, remove the closePipes, etc... No 
> change in the runtime, so your right.
> 
> Profiling doesn't help much: execution time is mostly idle time (but 
> with a significant increase on PipeableOSProcess commands: goes from 
> invisible to 2700 ms. A user break in the middle shows it delay waiting 
> on output of the external process).
> 
> Only hint I could see is that it seems to be linked with the size of the 
> output of the command.

Thierry,

Aha! I am quite sure that you have located the problem. There must be
something preventing the OS process from running to completion with
a larger amount of output data. It definitely sounds like a bug in my
latest update to Pipeable OSProcess.

Thank you very much for finding this. I will get it fixed as quickly
as I can.

Dave


> 
> Le 11/10/2014 15:34, David T. Lewis a ?crit :
> >On Fri, Oct 10, 2014 at 01:32:27PM -0400, David T. Lewis wrote:
> >>>Le 10/10/2014 17:52, David T. Lewis a ?crit :
> >>>>>2014-10-10 14:09 GMT+02:00 David T. Lewis <le...@mail.msen.com>:
> >>>>>
> >>>>>>
> >>>>>>Right. But please do test it in your applications to be sure, I really
> >>>>>>only
> >>>>>>did simple testing and I am sure there may still chances for problems
> >>>>>>in
> >>>>>>this area.
> >>>>>>
> >>>>>
> >>>>>Hi Dave,
> >>>>>
> >>>>>Would it has a chance of slowing down things a lot?
> >>>>>
> >>>>>There is apparently something going very very slow compared to
> >>>>>OSProcess
> >>>>>4.5.11 when used from GitFileTree. So slow that I killed the image
> >>>>>building
> >>>>>script before it was over. Reverting GitFileTree to 4.5.11 solved it.
> >>>>>
> >>>>
> >>>>I don't this so, but I am not certain. The update for PipeableOSProcess
> >>>>affects only the methods in PipeableOSProcess class>>command: and
> >>>>closely
> >>>>related methods. If GitFileTree is using that idiom, then it is
> >>>>certainly
> >>>>possible that I have introduced a bug that does not show up in my unit
> >>>>tests.
> >>>
> >>>Typical code in GitFileTree is this:
> >>>
> >>>[
> >>>c := PipeableOSProcess command: ''.
> >>>output := c output.
> >>>...
> >>>] ensure: [c closePipes]
> >>>
> >>>Maybe it's triggering something.
> >>>
> >>>Thierry
> >>>
> >>
> >>Hmmm... I wonder if the #closePipes is causing a problem now. I don't know
> >>if I ever tested to see if sending closePipes works after the pipes are
> >>already closed, and my recent change closes the pipes after #output is
> >>evaluated. I'll check it when I get home.
> >>
> >
> >I tried this in both Squeak trunk and Pharo 3.0:
> >
> >    (1 to: 100) collect: [:e | | c output |
> >       [c := PipeableOSProcess command: 'ls -lt'.
> >       output := c output.
> >       ] ensure: [c closePipes].
> >       output ].
> >
> >I get the expected results, and no open file handles left over.
> >
> >The #closePipes is no longer needed, so this can now be simplified as 
> >follows,
> >which also leaves no open file handles:
> >
> >    (1 to: 100) collect: [:e | (PipeableOSProcess command: 'ls -lt') 
> >    output].
> >
> >I am not sure what the issue is when used with GitFileTree, but it does not
> >look like the change to PipeableOSProcess class>> command: is directly 
> >involved.
> >But ... I'm probably missing something.
> >
> >If you are fairly sure the that problem is related to the the 
> >PipeableOSProcess
> >change, then the only other thing I can think of right now is that there 
> >may
> >be some other places in GitFileTree where PipeableOSProcess is being used 
> >in
> >a different way, and maybe I caused a problem there due the the change in 
> >the
> >#command: methods. But this a a complete guess, I really do not know.
> >
> >Dave
> >
> >
> >
> 

Reply via email to