Last modified 14 years ago Last modified on 08/03/07 15:22:52

SRM advisory delete doesn't work

There are two issues know with dCache which result in problems with srm-advisory delete or 'lcg-del'.

Triggered by internal dCache timeouts


srm-advisory-delete or lcg-del report a problem though the file is finally removed from the pnfs file system and later on from disk.


The SRM is sending the request to delete a file to the dCache core and sets a timeout for the reply to 10 seconds. If the dCache core need more than 10 seconds to fullfil the request, the SRM modules gives up and reports an error to the 'advisory-del' client. Nevertheless the request is performed in the dCache core, so that the file is finally delete from the pnfs filesystem (from dCache).


We hope to get this fixed as soon as possible.

Triggered by a issue with pnfs


srm-advisory-delete or lcg-del report a problem and the file is indeed still in the pnfs filesystem. Very often, this affects only a particular subtree of pnfs but not whle system.


The advisory delete command needs a function of the pnfs filesystem to obtain the filepath by the pnfs i-node (pnfsID). For still unknown reasons, it happens that for a particular subset of the pnfs tree the function doesn't work, due a piece of information lots in one of the pnfs database. A good indication that this happened is to run the pnfs pathfinder command on a pnfs id which exists, but for which the delete didn't work. You will very likely get something similiar to this

MY_COMPUTER $ cd /pnfs/fs
MY_COMPUTER $ PATH=/opt/pnfs/tools:$PATH
MY_COMPUTER $ pathfinder 00010000000000000000A2C8
00010000000000000000A2C8 generated
0001000000000000000040A8 hone
000100000000000000001060 -
000100000000000000001040 fs
000100000000000000001020 root
000100000000000000001000 -
000000000000000000000100 -
000000000000000000000000 -

This is the line which is obviously not correct

000100000000000000001060 -

How to fix this

Run the script below and send the output to support@….

Usage : SCRIPT <directoryPathInPnfs>

if [ $# -lt 1 ] ; then
  echo "Usage : <pnfsDirectoryPath>" >&2
  exit 2
if [ ! -d $directory ] ; then
  echo "not a directory path : $directory" >&2
  exit 2
cd $directory
while :

     name=`basename $fullpath`
     cd ..
     pnfsid=`cat ".(id)($name)"`
     if [ $? -ne  0 ] ; then exit 0 ; fi
     parent=`cat ".(parent)($pnfsid)"`
     echo "id : $pnfsid ; parent $parent"
exit 0

Last Modified by patrick at Tue Nov 30 16:36:55 2021