--- dao/FuldDaekningWorker/src/dk/daoas/fulddaekning/LookupWorker.java 2015/09/28 18:15:11 2721 +++ dao/FuldDaekningWorker/src/dk/daoas/fulddaekning/LookupWorker.java 2015/09/28 19:47:17 2722 @@ -61,24 +61,19 @@ public void run() { System.out.println( "Worker/" + workerID + " starting"); - while ( ! ikkeDaekkede.isEmpty() ) { + try { + while ( ! ikkeDaekkede.isEmpty() ) { - Adresse qAdresse = null; - try { - qAdresse = ikkeDaekkede.remove(); - } catch (NoSuchElementException e) { - logger.info( "Worker/" + workerID + " NoSuchElementException"); - break; - } + 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 @@ -86,8 +81,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); + } } @@ -115,9 +116,16 @@ } } + } + + } 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);