From 6893dab6a97bea4bb719ede43d149fced4d07a04 Mon Sep 17 00:00:00 2001 From: Rick Herrick <jrherrick@wustl.edu> Date: Mon, 22 Feb 2016 14:52:20 -0600 Subject: [PATCH] Fixed issue where initializing templatized DICOM file namer broke Turbine/Velocity initialization. Added initial delay to prearchive rebuild task. --- .../nrg/dcm/id/TemplatizedDicomFileNamer.java | 32 +++++++++++-------- .../xnat/configuration/SchedulerConfig.java | 2 +- .../webapp/WEB-INF/conf/InstanceSettings.xml | 5 --- 3 files changed, 19 insertions(+), 20 deletions(-) diff --git a/src/main/java/org/nrg/dcm/id/TemplatizedDicomFileNamer.java b/src/main/java/org/nrg/dcm/id/TemplatizedDicomFileNamer.java index f5e79ca2..ecddac66 100644 --- a/src/main/java/org/nrg/dcm/id/TemplatizedDicomFileNamer.java +++ b/src/main/java/org/nrg/dcm/id/TemplatizedDicomFileNamer.java @@ -50,7 +50,6 @@ public class TemplatizedDicomFileNamer implements DicomFileNamer { _log.debug("Initializing the templatized DICOM file namer with the template: " + naming); } _naming = hasExtension(naming) ? naming : naming + SUFFIX; - _template = initializeTemplate(); _variables = initializeVariables(); _hashes = initializeHashes(); validate(); @@ -88,7 +87,7 @@ public class TemplatizedDicomFileNamer implements DicomFileNamer { } StringWriter writer = new StringWriter(); try { - _template.merge(context, writer); + getTemplate().merge(context, writer); } catch (Exception exception) { throw new RuntimeException("Error trying to resolve naming template", exception); } @@ -103,7 +102,7 @@ public class TemplatizedDicomFileNamer implements DicomFileNamer { */ private String calculateHashString(final List<String> variables, final Map<String,String> values) { final int hash = Lists.transform(variables, Functions.forMap(values)).hashCode(); - return Long.toString(hash & 0xffffffffl, 36); + return Long.toString(hash & 0xffffffffL, 36); } /** @@ -126,16 +125,20 @@ public class TemplatizedDicomFileNamer implements DicomFileNamer { * @return The initialized Velocity template. * @throws Exception */ - private Template initializeTemplate() throws Exception { - RuntimeServices runtimeServices = RuntimeSingleton.getRuntimeServices(); - runtimeServices.init(); - StringReader reader = new StringReader(_naming); - SimpleNode node = runtimeServices.parse(reader, "naming"); - Template template = new Template(); - template.setRuntimeServices(runtimeServices); - template.setData(node); - template.initDocument(); - return template; + private Template getTemplate() throws Exception { + synchronized (_naming) { + if (_template == null) { + RuntimeServices runtimeServices = RuntimeSingleton.getRuntimeServices(); + runtimeServices.init(); + StringReader reader = new StringReader(_naming); + SimpleNode node = runtimeServices.parse(reader, "naming"); + Template template = new Template(); + template.setRuntimeServices(runtimeServices); + template.setData(node); + template.initDocument(); + } + } + return _template; } /** @@ -194,7 +197,8 @@ public class TemplatizedDicomFileNamer implements DicomFileNamer { } private final String _naming; - private final Template _template; private final Set<String> _variables; private final Map<String, List<String>> _hashes; + + private Template _template; } diff --git a/src/main/java/org/nrg/xnat/configuration/SchedulerConfig.java b/src/main/java/org/nrg/xnat/configuration/SchedulerConfig.java index fd68409e..83c4acec 100644 --- a/src/main/java/org/nrg/xnat/configuration/SchedulerConfig.java +++ b/src/main/java/org/nrg/xnat/configuration/SchedulerConfig.java @@ -49,7 +49,7 @@ public class SchedulerConfig { clearExpiredAliasTokens.call(); } - @Scheduled(fixedRateString = "${services.rebuilder.repeat:60000}") + @Scheduled(fixedRateString = "${services.rebuilder.repeat:60000}", initialDelay = 60000) public void rebuildSessionXmls() { _log.debug("Now running the session rebuild process."); final SessionXMLRebuilder sessionXMLRebuilder = new SessionXMLRebuilder(_provider, _interval, _jmsTemplate); diff --git a/src/main/webapp/WEB-INF/conf/InstanceSettings.xml b/src/main/webapp/WEB-INF/conf/InstanceSettings.xml index f7fff52d..a1ae1fb6 100644 --- a/src/main/webapp/WEB-INF/conf/InstanceSettings.xml +++ b/src/main/webapp/WEB-INF/conf/InstanceSettings.xml @@ -1,5 +1,4 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- edited with XMLSPY v2004 rel. 3 U (http://www.xmlspy.com) by Tim Olsen (Washington University) --> <Instance_Settings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schemas/xdat/instance.xsd" site_url="http://localhost:8080" admin_email="administrator@xnat.org" archive_root_path="/data/xnat/archive" prearchive_path="/data/xnat/prearchive" cache_path="/data/xnat/cache" @@ -19,9 +18,5 @@ <Data_Model File_Name="catalog.xsd" File_Location="schemas/catalog" DB="xnat"/> <Data_Model File_Name="protocolValidation.xsd" File_Location="schemas/validation" DB="xnat"/> <Data_Model File_Name="screeningAssessment.xsd" File_Location="schemas/screening" DB="xnat"/> - -<!--<Data_Model File_Name="ext.xsd" File_Location="schemas/ext" DB="xnat"/>--> - <!-- Start modules schemas: Reserved for xnat_builder, don't modify anything between this line and the end modules line. --> - <!-- End modules schemas: Reserved for xnat_builder, don't modify anything between this line and the start modules line. --> </Models> </Instance_Settings> -- GitLab