@@ -73,11 +73,14 @@ public EcodInstallation() {
7373 public List <EcodDomain > getDomainsForPDB (String pdbId ) throws IOException {
7474 domainsFileLock .readLock ().lock ();
7575 try {
76+ logger .trace ("LOCK readlock" );
7677 while ( domainMap == null ) {
7778 // unlock to allow ensureDomainsFileInstalled to get the write lock
79+ logger .trace ("UNLOCK readlock" );
7880 domainsFileLock .readLock ().unlock ();
7981 indexDomains ();
8082 domainsFileLock .readLock ().lock ();
83+ logger .trace ("LOCK readlock" );
8184 }
8285
8386 if (pdbId != null )
@@ -93,6 +96,7 @@ public List<EcodDomain> getDomainsForPDB(String pdbId) throws IOException {
9396 }
9497 return clonedDoms ;
9598 } finally {
99+ logger .trace ("UNLOCK readlock" );
96100 domainsFileLock .readLock ().unlock ();
97101 }
98102 }
@@ -107,6 +111,11 @@ public EcodDomain getDomainsById(String ecodId) throws IOException {
107111 if ( match .matches () )
108112 pdbId = match .group (1 );
109113 List <EcodDomain > doms = getDomainsForPDB (pdbId );
114+ if (doms == null ) {
115+ logger .debug ("Null domains for {} from {}" ,pdbId ,ecodId );
116+ return null ;
117+ }
118+ logger .debug ("Got {} domains from {}" ,doms .size (),pdbId );
110119 for (EcodDomain d : doms ) {
111120 if (ecodId .equals (d .getDomainId ())) {
112121 return d ;
@@ -117,16 +126,20 @@ public EcodDomain getDomainsById(String ecodId) throws IOException {
117126
118127 public List <EcodDomain > getAllDomains () throws IOException {
119128 domainsFileLock .readLock ().lock ();
129+ logger .trace ("LOCK readlock" );
120130 try {
121131 while ( allDomains == null ) {
122132 // unlock to allow ensureDomainsFileInstalled to get the write lock
133+ logger .trace ("UNLOCK readlock" );
123134 domainsFileLock .readLock ().unlock ();
124135 ensureDomainsFileInstalled ();
125136 domainsFileLock .readLock ().lock ();
137+ logger .trace ("LOCK readlock" );
126138 }
127139 return allDomains ;
128140 } finally {
129- domainsFileLock .readLock ().lock ();
141+ logger .trace ("UNLOCK readlock" );
142+ domainsFileLock .readLock ().unlock ();
130143 }
131144
132145 }
@@ -135,30 +148,36 @@ public List<EcodDomain> getAllDomains() throws IOException {
135148 * Clears all domains, requiring the file to be reparsed for subsequent accesses
136149 */
137150 public void clear () {
138- domainsFileLock .writeLock ().lock ();;
151+ domainsFileLock .writeLock ().lock ();
152+ logger .trace ("LOCK writelock" );
139153 allDomains = null ;
140154 domainMap = null ;
155+ logger .trace ("UNLOCK writelock" );
141156 domainsFileLock .writeLock ().unlock ();
142157 }
143158 public String getVersion () {
144159 return version ;
145160 }
146161 public void setVersion (String version ) {
147162 domainsFileLock .readLock ().lock ();
163+ logger .trace ("LOCK readlock" );
148164 try {
149165 if (version .equals (this .version )) {
150166 return ; //no change
151167 }
152168 } finally {
169+ logger .trace ("UNLOCK readlock" );
153170 domainsFileLock .readLock ().unlock ();
154171 }
155172
156173 // update version and force reparsing
157174 domainsFileLock .writeLock ().lock ();
175+ logger .trace ("LOCK writelock" );
158176 try {
159177 this .version = version ;
160178 this .clear ();
161179 } finally {
180+ logger .trace ("UNLOCK writelock" );
162181 domainsFileLock .writeLock ().unlock ();
163182 }
164183 }
@@ -197,7 +216,9 @@ public void setCacheLocation(String cacheLocation) {
197216 }
198217 // update location
199218 domainsFileLock .writeLock ().lock ();
219+ logger .trace ("LOCK writelock" );
200220 this .cacheLocation = cacheLocation ;
221+ logger .trace ("UNLOCK writelock" );
201222 domainsFileLock .writeLock ().unlock ();
202223 }
203224
@@ -210,22 +231,26 @@ public void setCacheLocation(String cacheLocation) {
210231 public void ensureDomainsFileInstalled () throws IOException {
211232 // Quick check for availability
212233 domainsFileLock .readLock ().lock ();
234+ logger .trace ("LOCK readlock" );
213235 try {
214236 if ( allDomains != null ) {
215237 return ;
216238 }
217239 } finally {
240+ logger .trace ("UNLOCK readlock" );
218241 domainsFileLock .readLock ().unlock ();
219242 }
220243
221244 // Download domains
222245 domainsFileLock .writeLock ().lock ();
246+ logger .trace ("LOCK writelock" );
223247 try {
224248 if ( !domainsAvailable () ) {
225249 downloadDomains ();
226250 }
227251 parseDomains ();
228252 } finally {
253+ logger .trace ("UNLOCK writelock" );
229254 domainsFileLock .writeLock ().unlock ();
230255 }
231256 }
@@ -236,11 +261,13 @@ public void ensureDomainsFileInstalled() throws IOException{
236261 */
237262 private boolean domainsAvailable () {
238263 domainsFileLock .readLock ().lock ();
264+ logger .trace ("LOCK readlock" );
239265 try {
240266 File f = getDomainFile ();
241267
242268 return f .exists () && f .length ()>0 ;
243269 } finally {
270+ logger .trace ("UNLOCK readlock" );
244271 domainsFileLock .readLock ().unlock ();
245272 }
246273 }
@@ -251,6 +278,7 @@ private boolean domainsAvailable() {
251278 */
252279 private void downloadDomains () throws IOException {
253280 domainsFileLock .writeLock ().lock ();
281+ logger .trace ("LOCK writelock" );
254282 try {
255283 URL domainsURL = new URL ( url + DOMAINS_PATH + getDomainFilename ());
256284 File localFile = getDomainFile ();
@@ -260,6 +288,7 @@ private void downloadDomains() throws IOException {
260288 } catch (MalformedURLException e ) {
261289 logger .error ("Malformed url: " + url + DOMAINS_PATH + getDomainFilename (),e );
262290 } finally {
291+ logger .trace ("UNLOCK writelock" );
263292 domainsFileLock .writeLock ().unlock ();
264293 }
265294 }
@@ -286,10 +315,12 @@ private File getDomainFile() {
286315 */
287316 private void parseDomains () throws IOException {
288317 domainsFileLock .writeLock ().lock ();
318+ logger .trace ("LOCK writelock" );
289319 try {
290320 EcodParser parser = new EcodParser (getDomainFile ());
291321 allDomains = parser .getDomains ();
292322 } finally {
323+ logger .trace ("UNLOCK writelock" );
293324 domainsFileLock .writeLock ().unlock ();
294325 }
295326 }
@@ -300,6 +331,7 @@ private void parseDomains() throws IOException {
300331 */
301332 private void indexDomains () throws IOException {
302333 domainsFileLock .writeLock ().lock ();
334+ logger .trace ("LOCK writelock" );
303335 try {
304336 if ( allDomains == null ) {
305337 ensureDomainsFileInstalled ();
@@ -331,6 +363,7 @@ private void indexDomains() throws IOException {
331363 currDomains .add (d );
332364 }
333365 } finally {
366+ logger .trace ("UNLOCK writelock" );
334367 domainsFileLock .writeLock ().unlock ();
335368 }
336369
0 commit comments