diff --git a/tapeserver/castor/tape/tapeserver/daemon/DiskReadTask.cpp b/tapeserver/castor/tape/tapeserver/daemon/DiskReadTask.cpp
index a4706d83bc2c415cd58a3e81a2a6403e8219a623..d75779b65238d0f2f735ef034b19788561581725 100644
--- a/tapeserver/castor/tape/tapeserver/daemon/DiskReadTask.cpp
+++ b/tapeserver/castor/tape/tapeserver/daemon/DiskReadTask.cpp
@@ -39,7 +39,10 @@ DiskReadTask::DiskReadTask(DataConsumer & destination,
         size_t numberOfBlock,castor::server::AtomicFlag& errorFlag):
 m_nextTask(destination),m_archiveJob(archiveJob),
         m_numberOfBlock(numberOfBlock),m_errorFlag(errorFlag)
-{}
+{
+  m_archiveJobCachedInfo.remotePath = m_archiveJob->remotePathAndStatus.path.getRaw();
+  m_archiveJobCachedInfo.fileId = m_archiveJob->archiveFile.fileId;
+}
 
 //------------------------------------------------------------------------------
 // DiskReadTask::execute
@@ -208,8 +211,8 @@ void DiskReadTask::logWithStat(int level,const std::string& msg,log::LogContext&
               m_stats.transferTime?1.0*m_stats.dataVolume/1000/1000/m_stats.transferTime:0)
            .add("openRWCloseToTransferTimeRatio", 
               m_stats.transferTime?(m_stats.openingTime+m_stats.readWriteTime+m_stats.closingTime)/m_stats.transferTime:0.0)
-           .add("FILEID",m_archiveJob->archiveFile.fileId)
-           .add("path",m_archiveJob->remotePathAndStatus.path.getRaw());
+           .add("FILEID",m_archiveJobCachedInfo.fileId)
+           .add("path",m_archiveJobCachedInfo.remotePath);
     lc.log(level,msg);
 }
 
diff --git a/tapeserver/castor/tape/tapeserver/daemon/DiskReadTask.hpp b/tapeserver/castor/tape/tapeserver/daemon/DiskReadTask.hpp
index c12b86a5e9ddddefce32b13b473df9da368d101a..a849bb629800a4db96c775f864911859f010c731 100644
--- a/tapeserver/castor/tape/tapeserver/daemon/DiskReadTask.hpp
+++ b/tapeserver/castor/tape/tapeserver/daemon/DiskReadTask.hpp
@@ -97,6 +97,16 @@ private:
    */
   cta::ArchiveJob *m_archiveJob;
   
+  /**
+   * Information about the archive job we will cache as it is needed
+   * after the archive job is going to be potentially deleted by the 
+   * writer
+   */
+  struct {
+    std::string remotePath;
+    uint64_t fileId;
+  } m_archiveJobCachedInfo;
+  
   /**
    * The number of memory block we will need to read the whole file
    */