Did anyone try this yet? I haven’t had chance but would very much like to get this fixed as it’s the number one bug in biber right now due to such disappearing cache files.
PK > On 20 Jan 2015, at 6:58 am, Shawn Laffan <shawn.laf...@unsw.edu.au> wrote: > > A candidate patch for this issue is now ready for review. > > https://github.com/shawnlaffan/perl_par_reinstate_cache/blob/master/canary.patch > > Key points are more or less as per my previous email (below) except that I > have added a sub called PAR::get_canary_file_name to avoid any hard coding. > I have also decreased the verbosity threshold for packing files into /inc, as > previously they needed double verbosity flags in pp to trigger. > > Thoughts? > > > Regards, > Shawn. > > > > On 21/12/2014 21:05, Shawn Laffan wrote: >> I've had a go at implementing the rearguard approach, albeit with the >> working name PAR_CANARY.txt instead of REARGUARD.txt. >> >> It's still in progress, but if people would like to comment or critique then >> changes are at https://github.com/shawnlaffan/perl_par_reinstate_cache >> >> Some key points are: >> >> 1. The approach I have taken is to add a method >> PAR::Packer::_add_canary_file, but possibly it should simply be appended to >> the -a file list. >> >> 2. Name clashes are unlikely, but perhaps the canary file name needs to be >> a bit more unique, or maybe it can be located in the script folder instead >> of the top level of the inc dir. >> >> 3. There also needs to be a method to access the canary file name as it is >> currently hard coded in both PAR::Packer and PAR.pm, but I'm not sure where >> best to locate that. >> >> 4. The test file is under the Par-Packer folder, >> t/21-pp_reinstate_cached_files.t. It could perhaps later be merged into >> 20-pp.t since it copies large amounts of code from that file. It needs >> "perl Makefile.PL; make" to have been run so it can access the relevant >> files. >> >> >> I also included the added files in the manifest under >> https://github.com/shawnlaffan/perl_par_reinstate_cache/commit/6cad3a0562aca287834a8b926ce2ed3f9b7552e1, >> assuming that was a bug as Roderich suggested. >> >> >> >> Regards, >> Shawn. >> >> >> >> On 19/12/2014 22:57, Roderich Schupp wrote: >>> >>> On Thu, Dec 18, 2014 at 10:22 PM, Shawn Laffan <shawn.laf...@unsw.edu.au> >>> wrote: >>> >>> The extractions currently use Archive::Unzip::Burst as the first attempt. >>> I don't know its behaviour, but I assume that if some files exist and are >>> locked then it will fail. >>> >>> It's also protected by the $inc.lock "mutex", just like the slow path >>> (using Archive::Zip). >>> >>> In that event the approach switches to iterating over $zip->memberNames, so >>> it will still work. (Actually, Archive::Unzip::Burst seems not to install >>> on Windows, so the latter approach will be the norm on that OS). >>> >>> Probably very few people use it. It's just a Perl small wrapper around >>> InfoZip unzip. >>> >>> Of course, this won't fix the issues where files are cleaned up while a PAR >>> is running process, >>> >>> Obviously we will only re-extract *missing* files, so no problem with >>> locked files here. >>> >>> so some sort of API sub would still be useful to allow scripts to >>> re-extract if file opens fail. >>> >>> That would imply that you are able to know when opening a file from "deep >>> inside third party modules" fails - how? >>> >>> WRT the different cache areas, PAR::_extract_inc currently spends up to 10 >>> seconds trying to create a lock file, so that line needs to be modified. >>> >>> Nope. It's not a lock file, it's a lock *directory*. That's because >>> creation of a directory is the only portable (even network filesystem safe) >>> filesystem mutex operation. The up to 10 second delay comes only into play >>> in the contended case. >>> >>> Adding a check for -w on the target temp location should be enough to avoid >>> that when the exe file is in a non-writable directory. >>> >>> The parent directory of $inc in _extract_inc is writable by construction. >>> >>> Cheers, Roderich >>> >>> >> >> -- >> Assoc Prof Shawn Laffan >> School of Biological, Earth and Environmental Sciences >> UNSW, Sydney 2052, Australia >> Tel +61 2 9385 8093 Fax +61 2 9385 1558 >> >> http://www.bees.unsw.edu.au/staff/shawn-laffan >> >> >> http://www.purl.org/biodiverse >> (free diversity analysis software) >> >> http://www.tandf.co.uk/journals/ijgis >> >> >> UNSW CRICOS Provider Code 00098G >> > > -- > Assoc Prof Shawn Laffan > School of Biological, Earth and Environmental Sciences > UNSW, Sydney 2052, Australia > Tel +61 2 9385 8093 Fax +61 2 9385 1558 > > http://www.bees.unsw.edu.au/staff/shawn-laffan > > > http://www.purl.org/biodiverse > (free diversity analysis software) > > http://www.tandf.co.uk/journals/ijgis > > > UNSW CRICOS Provider Code 00098G > -- Dr Philip Kime