--- dao/FuldDaekningWorker/src/dk/daoas/fulddaekning/LookupWorker.java 2015/09/28 11:09:33 2718 +++ dao/FuldDaekningWorker/src/main/java/dk/daoas/fulddaekning/LookupWorker.java 2015/09/29 09:58:14 2733 @@ -60,18 +60,19 @@ public void run() { System.out.println( "Worker/" + workerID + " starting"); - while ( ! ikkeDaekkede.isEmpty() ) { + try { + while ( ! ikkeDaekkede.isEmpty() ) { - Adresse qAdresse = ikkeDaekkede.remove(); + Adresse qAdresse = ikkeDaekkede.remove(); - short ho = qAdresse.ho; - KdTree addressTree = hoTrees.get(ho); + short ho = qAdresse.ho; + KdTree addressTree = hoTrees.get(ho); - Collection res = addressTree.nearestNeighbourSearch(MAX_RESULTS, qAdresse); - if (res.size() > MAX_RESULTS ) { - System.out.println("Returnerede mere end MAX_RESULTS> " + res.size() ); - System.exit(0); - } + Collection res = addressTree.nearestNeighbourSearch(MAX_RESULTS, qAdresse); + if (res.size() > MAX_RESULTS ) { + System.out.println("Returnerede mere end MAX_RESULTS> " + res.size() ); + System.exit(0); + } Adresse bedsteAdr = res.iterator().next(); //Tag første element @@ -79,8 +80,14 @@ //Hvis at den er inden for afstand, så prøver vi at lave findNærmste på vej distancen if (bedsteAfstand <= consts.getMaxDistance()) { - bedsteAdr = osrmHelper.getNearestViaTable(qAdresse, res); - bedsteAfstand = GeoPointHelper.beregnAfstand(qAdresse, bedsteAdr); + Adresse bedsteAdr2 = osrmHelper.getNearestViaTable(qAdresse, res); + + if (bedsteAdr2 != null) { + bedsteAdr = bedsteAdr2; + bedsteAfstand = GeoPointHelper.beregnAfstand(qAdresse, bedsteAdr); + } else { + logger.info("NearestViaTable returned null for " + qAdresse); + } } @@ -108,15 +115,22 @@ } } + } + + } catch (Exception e) { + logger.log( Level.SEVERE, "Worker/" + workerID, e); } + + try { + logger.info( "Worker/" + workerID + " afventer barrier"); barrier.await(); } catch (BrokenBarrierException e) { logger.log(Level.SEVERE, e.getMessage(), e); System.exit(-1); } catch(InterruptedException e) { - //Do nothing + logger.log(Level.SEVERE, e.getMessage(), e); }