[execnet-dev] RSync Issue
holger krekel
holger at merlinux.eu
Tue Jul 27 19:47:48 CEST 2010
Hi Charles,
so i think that rsyncing symlinks should now work reaonsably well.
I used your patches as a starting point but also added tests and made
sure permissions are also transferred for directories. Could you verify
that after installing
http://hudson.testrun.org/view/pytest/job/execnet-sdist/lastSuccessfulBuild/artifact/.tox/dist/execnet-1.0.8a1.zip
working with symlinks works for you?
Also, i am still interested in a small failing test case for the other issue
where you could not use RSync later on.
thanks & best,
holger
On Mon, Jul 12, 2010 at 17:16 -0500, Charles Solar wrote:
> I'll make up a small test case but just so I do not forgot I found
> another bug dealing with symlinks.
> I think that all relative symlinks are broken, or else I do not
> understand how they could have worked before.
> I saw it be having a structure like this rsync:
>
> lib/
> libnet.so -> libnet.so.1.0.0
> libnet.so.1.0.0
>
> What it created on the remote side was
>
> lib/
> libnet.so -> /tmp/rsynctemp/libnet.so.1.0.0
> libnet.so.1.0.0
>
> The link on the remote side did not include the lib subdir in the
> link. After looking at the code I fixed it up but I do not think they
> should be working at all since the code atm only works if the symlink
> is in the root dest directory.
>
> Ill send in a patch for you to look at.
>
> Charles
>
> On Sun, Jul 11, 2010 at 5:36 AM, holger krekel <holger at merlinux.eu> wrote:
> > Hi Charles,
> >
> > On Fri, Jul 09, 2010 at 10:03 -0500, Charles Solar wrote:
> >> It would appear that RSync will only work with brand new gateways that
> >> have not had any other operations run on them. Is this intentional?
> >
> > No. Sounds like a bug.
> >
> >> For example, I do something like
> >>
> >> gw = execnet.makegateway( "ssh=foobar" )
> >> gw.remote_exec( mybootstrapper )
> >>
> >> ... then later I want to rsync ...
> >>
> >> rsync = execnet.RSync( "/tmp/foobar" )
> >> rsync.add_target( gw, "/tmp/barfoo" )
> >> rsync.send()
> >>
> >> I get remote EOFErrors
> >>
> >> File "execnet-1.0.6-py2.7.egg/execnet/rsync.py", line 126, in send
> >> self._end_of_channel(channel)
> >> File "execnet-1.0.6-py2.7.egg/execnet/rsync.py", line 44, in _end_of_channel
> >> channel.waitclose()
> >> File "execnet-1.0.6-py2.7.egg/execnet/gateway_base.py", line 377, in waitclose
> >> raise error
> >> exceptions.EOFError: expected 1 bytes, got 0
> >>
> >> If I however create a brand new gateway to give to rsync it works fine.
> >>
> >> I would think that since rsync just creates a new channel on the
> >> gateway that it should work on existing 'old' gateways.
> >
> > yip. Myself i only used it for doing things at the beginning, it seems.
> > Do you have or could you try to find an repeatable minimal example?
> >
> > best,
> >
> > holger
> >
>
--
More information about the execnet-dev
mailing list