From: <jav...@us...> - 2012-07-25 08:27:23
|
Revision: 16906 http://dcm4che.svn.sourceforge.net/dcm4che/?rev=16906&view=rev Author: javawilli Date: 2012-07-25 07:17:47 +0000 (Wed, 25 Jul 2012) Log Message: ----------- [#DCMEE-1747] Access Time Update fails if study is located in more than one filesystem Modified Paths: -------------- dcm4chee/dcm4chee-arc/trunk/dcm4jboss-sar/src/java/org/dcm4chex/archive/dcm/qrscp/QueryRetrieveScpService.java Modified: dcm4chee/dcm4chee-arc/trunk/dcm4jboss-sar/src/java/org/dcm4chex/archive/dcm/qrscp/QueryRetrieveScpService.java =================================================================== --- dcm4chee/dcm4chee-arc/trunk/dcm4jboss-sar/src/java/org/dcm4chex/archive/dcm/qrscp/QueryRetrieveScpService.java 2012-07-23 18:43:05 UTC (rev 16905) +++ dcm4chee/dcm4chee-arc/trunk/dcm4jboss-sar/src/java/org/dcm4chex/archive/dcm/qrscp/QueryRetrieveScpService.java 2012-07-25 07:17:47 UTC (rev 16906) @@ -270,6 +270,8 @@ private boolean verifyMD5OnMakeCStoreRQ = false; + private HashSet<String> updateSOFrequest = new HashSet<String>(); + public QueryRetrieveScpService() { moveScp = createMoveScp(); getScp = createGetScp(); @@ -1298,12 +1300,7 @@ try { for (Iterator<StudyInstanceUIDAndDirPath> it = studyInfos.iterator(); it.hasNext();) { StudyInstanceUIDAndDirPath studyInfo = it.next(); - try { - fsMgt.touchStudyOnFileSystem(studyInfo.studyIUID, studyInfo.dirpath); - } catch (Exception e) { - log.warn("Failed to update access time for study " - + studyInfo, e); - } + updateStudyAccessTime(studyInfo.studyIUID, studyInfo.dirpath); } } finally { try { @@ -1315,12 +1312,21 @@ private void updateStudyAccessTime(String studyIUID, String dirpath) { if (recordStudyAccessTime) { + String key = studyIUID+"_"+dirpath; + synchronized(this) { + if (!updateSOFrequest.add(key)) { + if (log.isDebugEnabled()) + log.debug("updateStudyAccessTime for "+key+" already requested!"); + return; + } + } try { getFileSystemMgt().touchStudyOnFileSystem(studyIUID, dirpath); } catch (Exception e) { log.warn("Failed to update access time for study " + studyIUID + " on " + dirpath, e); } + updateSOFrequest.remove(key); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |