WikiWatershed / mmw-geoprocessing

A Spark Job Server job for Model My Watershed geoprocessing.
Apache License 2.0
6 stars 6 forks source link

Protect against empty collection exception in SummaryJob #39

Closed hectcastro closed 6 years ago

hectcastro commented 7 years ago

It is unclear what user inputs are leading to this exception, but it appears as though some collection traversal actions in the SummaryJob are generating exceptions at a steady rate:

java.lang.UnsupportedOperationException: empty collection
        at org.apache.spark.rdd.RDD$$anonfun$reduce$1$$anonfun$apply$36.apply(RDD.scala:1009)
        at org.apache.spark.rdd.RDD$$anonfun$reduce$1$$anonfun$apply$36.apply(RDD.scala:1009)
        at scala.Option.getOrElse(Option.scala:120)
        at org.apache.spark.rdd.RDD$$anonfun$reduce$1.apply(RDD.scala:1009)
        at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:147)
        at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:108)
        at org.apache.spark.rdd.RDD.withScope(RDD.scala:310)
        at org.apache.spark.rdd.RDD.reduce(RDD.scala:989)
        at org.wikiwatershed.mmw.geoprocessing.SummaryJob$.histograms(SummaryJob.scala:128)
        at org.wikiwatershed.mmw.geoprocessing.SummaryJob$.runJob(SummaryJob.scala:41)
        at org.wikiwatershed.mmw.geoprocessing.SummaryJob$.runJob(SummaryJob.scala:25)
        at spark.jobserver.JobManagerActor$$anonfun$spark$jobserver$JobManagerActor$$getJobFuture$4.apply(JobManagerActor.scala:254)
        at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
        at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
kellyi commented 6 years ago

Since we're not using SJS or the SummaryJob class anymore, I don't think this specific error should recur. Going to close.