Re: Error with sync via ftp removing smoke files?

[email protected] (Bram) Tue, 27 May 2008 00:03:24 +0200
Newsgroups perl.daily-build
Message-ID <[email protected]>
Quoting Abe Timmerman <[email protected]>:

> Bram wrote:
>> Ran into a problem setting up smoking on one machine...
>>
>> Configured the smoke to download sources via ftp.
>> The machine is behind a firewall which doesn't seem to be  =20
>> configured properly for ftp.
>> It was able to connect but all other operations timed out.
>>
>> When I ran:
>>
>>  cd /tmp
>>  /opt/perl/libs/local/bin/smokecurrent.sh -Dcc=3D"ccache /opt/gcc/bin/gcc=
430"
>>
>> everything in /opt/perl/libs/local/bin got removed.
>
> That is not good. I am so sorry!
>
> I am looking into this matter, but cannot reproduce.


What is happening (I believe):

Test::Smoke::Syncer::new is called with sync_type forest.

Test::Smoke::Syncer::Forest::sync checks the fsync type which is ftp =20
and calls:
Test::Smoker::Syncer::new,

Then it calls: $syncer->sync (line 1436).
(Note that it does not check if the sync succeeds or fails.)

Then it sets the type to hardlink and calls ->sync to sync the inter =20
dir from the master dir (assuming I'm reading the code correctly):

Then it sets the type to hardlink and calls ->sync to sync the build =20
dir from the inter dir.

Test::Smoke::Syncer::Hardlink::sync calls:
      $self->clean_from_directory( $source_dir ); (line 1269)

which is supposed to remove some files.


What might fix it (will test and report back):

a) check if the sync succeeded in forest before continuing,
b) error on the ftp/forest combination,


Something else I noticed:

Test::Smoke::Syncer::Rsync::sync does a chdir to the ddir
Test::Smoke::Syncer::Snapsh:sync creates the ddir if it doesn't exists =20
and does a chdir in _extract_snapshot (assuming it got that far)
Test::Smoke::Syncer::Copy::sync does a chdir to the ddir
Test::Smoke::Syncer::Hardlink::sync creates the ddir if it doesn't =20
exists (but doesn't do a chdir)
Test::Smoke::Syncer::FTP::sync doesn't do a chdir
Test::Smoke::Syncer::Forest::sync doesn't do a chdir

If the sync type is Forest in combination with rsync then a chdir to =20
the ddir happend.
If the sync type is Forest in combination with rsync then a chdir to =20
the ddir did not happen and that might leave it in a wrong directory.


> Can you try with snapshots from APC (I believe that works out of the
> box), that might be safer and is a lot faster.

It's set to Forest + rsync now  (used a server in another network to =20
forward everything on port 80 to the rsync server of activestate)



Kind regards,

Bram