dCache SRM Client 3.0.2 Release Notes
Highlights
This release includes various improvements to srmfs:
- Fix support for scripting with srmfs.
- Show server response in debug mode.
- Fix handling filenames with spaces, colons, hash symbols, etc
- Speed up ls glob support with DPM.
- Fix running srmfs from directories with spaces.
- Fix running srmfs with Java 7.
The srmfs may be used for scripting in three ways: with an srmfs command in the command-line (srmfs srm://srm-server.example.org/ ls -l), by piping commands (echo 'ls -l' | srmfs srm://srm-server.example.org/), and by creating a file that srmfs should use ( echo 'ls -l' > script; srmfs -f=script srm://srm-server.example.org/). These have been fixed to work reliably for all commands.
The debug mode (-debug) shows the SRM requests sent to the server, amongst other information. This release updates the debug output to also show the response from the server.
Various characters must be escaped when calculating the SURL. Previous versions of srmfs failed to do this, preventing it from working with files and directories containing a space, a colon or a hash symbol or similar characters.
DPM replies to directory listing with a non-canonical response, which srmfs canonicalises. The code that handles globbing support in 'ls' failed to do this, resulting in the client making (many) more requests to the server that is necessary. This release fixes this issue.
The script 'srmfs' that builds the Java command-line contained some places where it assumed that directories contain no spaces. This release removes those assumptions.
The 'srmfs' utility included code that (mistakenly) required Java 8's code library. This resulted in errors like:
[~] srmfs srm://dcache-se-desy.desy.de/pnfs/desy.de/desy Exception in thread "main" java.lang.NoSuchMethodError: java.lang.Class.getDeclaredAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation; at org.dcache.util.cli.AnnotatedCommandExecutor.(AnnotatedCommandExecutor.java:87) at org.dcache.util.cli.AnnotatedCommandScanner.scan(AnnotatedCommandScanner.java:58) at org.dcache.util.cli.CommandInterpreter.addCommandListener(CommandInterpreter.java:55) at org.dcache.util.cli.ShellApplication. (ShellApplication.java:66) at org.dcache.srm.shell.SrmShell. (SrmShell.java:315) at org.dcache.srm.shell.SrmShell.main(SrmShell.java:281)
This release fixes this so srmfs runs with Java 7, as intended.