locationtech / geowave

GeoWave provides geospatial and temporal indexing on top of Accumulo, HBase, BigTable, Cassandra, Kudu, Redis, RocksDB, and DynamoDB.
Apache License 2.0
502 stars 190 forks source link

NoSuchMethodError during Ingest localToGw #1727

Open michaeljfazio opened 4 years ago

michaeljfazio commented 4 years ago

I've started to encounter this error when attempting to ingest data locally for a particular dataset which up until now has been working.

Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.math.LongMath.saturatedAdd(JJ)J
        at com.google.common.collect.Streams.concat(Streams.java:155)
        at org.locationtech.geowave.core.store.metadata.AdapterIndexMappingStoreImpl.addAdapterIndexMapping(AdapterIndexMappingStoreImpl.java:79)
        at org.locationtech.geowave.core.store.base.BaseDataStore.internalAddIndices(BaseDataStore.java:1148)
        at org.locationtech.geowave.core.store.base.BaseDataStore.addType(BaseDataStore.java:1167)
        at org.locationtech.geowave.core.store.ingest.LocalIngestRunData$IndexWriterFactory.create(LocalIngestRunData.java:132)
        at org.locationtech.geowave.core.store.ingest.LocalIngestRunData$IndexWriterFactory.create(LocalIngestRunData.java:126)
        at org.apache.commons.pool2.BaseKeyedPooledObjectFactory.makeObject(BaseKeyedPooledObjectFactory.java:62)
        at org.apache.commons.pool2.impl.GenericKeyedObjectPool.create(GenericKeyedObjectPool.java:1041)
        at org.apache.commons.pool2.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:357)
        at org.apache.commons.pool2.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:279)
        at org.locationtech.geowave.core.store.ingest.LocalIngestRunData.getIndexWriter(LocalIngestRunData.java:102)
        at org.locationtech.geowave.core.store.ingest.AbstractLocalFileIngestDriver.ingestData(AbstractLocalFileIngestDriver.java:274)
        at org.locationtech.geowave.core.store.ingest.AbstractLocalFileIngestDriver.processFileSingleThreaded(AbstractLocalFileIngestDriver.java:208)
        at org.locationtech.geowave.core.store.ingest.AbstractLocalFileIngestDriver.processFile(AbstractLocalFileIngestDriver.java:153)
        at org.locationtech.geowave.core.store.ingest.AbstractLocalFileIngestDriver.processFile(AbstractLocalFileIngestDriver.java:38)
        at org.locationtech.geowave.core.store.ingest.LocalPluginFileVisitor.visitFile(LocalPluginFileVisitor.java:128)
        at org.locationtech.geowave.core.store.ingest.LocalPluginFileVisitor.visitFile(LocalPluginFileVisitor.java:36)
        at java.nio.file.Files.walkFileTree(Files.java:2670)
        at java.nio.file.Files.walkFileTree(Files.java:2742)
        at org.locationtech.geowave.core.store.ingest.AbstractLocalFileDriver.processInput(AbstractLocalFileDriver.java:126)
        at org.locationtech.geowave.core.store.ingest.AbstractLocalFileIngestDriver.runOperation(AbstractLocalFileIngestDriver.java:72)
        at org.locationtech.geowave.core.ingest.operations.LocalToGeowaveCommand.computeResults(LocalToGeowaveCommand.java:175)
        at org.locationtech.geowave.core.ingest.operations.LocalToGeowaveCommand.execute(LocalToGeowaveCommand.java:73)
        at org.locationtech.geowave.core.cli.GeoWaveMain.run(GeoWaveMain.java:70)
        at org.locationtech.geowave.core.cli.GeoWaveMain.main(GeoWaveMain.java:41)

Strangely enough, if I change the number of threads to be greater than 1 then, the ingestion starts fine without any errors (later it runs out of memory but that seems to be unrelated).

michaeljfazio commented 4 years ago

Seems that this also only happens if the index im attempting to write to, was recreated with the same name at some point (I had issued a geowave index delete) on it before recreating it.