Error in stream-enrich jackson databind

Hi,

i am getting an error when i run stream-enrich (Kafka project)

Exception in thread "main" java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.node.ObjectNode.<init>(Lcom/fasterxml/jackson/databind/node/JsonNodeFactory;Ljava/util/Map;)V at com.maxmind.db.Decoder.decodeMap(Decoder.java:285) at com.maxmind.db.Decoder.decodeByType(Decoder.java:154) at com.maxmind.db.Decoder.decode(Decoder.java:147) at com.maxmind.db.Decoder.decodeMap(Decoder.java:281) at com.maxmind.db.Decoder.decodeByType(Decoder.java:154) at com.maxmind.db.Decoder.decode(Decoder.java:147) at com.maxmind.db.Decoder.decode(Decoder.java:87) at com.maxmind.db.Reader.<init>(Reader.java:132) at com.maxmind.db.Reader.<init>(Reader.java:116) at com.maxmind.geoip2.DatabaseReader.<init>(DatabaseReader.java:66) at com.maxmind.geoip2.DatabaseReader.<init>(DatabaseReader.java:54) at com.maxmind.geoip2.DatabaseReader$Builder.build(DatabaseReader.java:160) at com.snowplowanalytics.maxmind.iplookups.IpLookups$$anonfun$getService$1.apply(IpLookups.scala:111) at com.snowplowanalytics.maxmind.iplookups.IpLookups$$anonfun$getService$1.apply(IpLookups.scala:106) at scala.Option.map(Option.scala:146) at com.snowplowanalytics.maxmind.iplookups.IpLookups.getService(IpLookups.scala:106) at com.snowplowanalytics.maxmind.iplookups.IpLookups.<init>(IpLookups.scala:91) at com.snowplowanalytics.maxmind.iplookups.IpLookups$.apply(IpLookups.scala:46) at com.snowplowanalytics.snowplow.enrich.common.enrichments.registry.IpLookupsEnrichment.ipLookups$lzycompute(IpLookupsEnrichment.scala:167) at com.snowplowanalytics.snowplow.enrich.common.enrichments.registry.IpLookupsEnrichment.ipLookups(IpLookupsEnrichment.scala:165) at com.snowplowanalytics.snowplow.enrich.common.enrichments.registry.IpLookupsEnrichment.extractIpInformation(IpLookupsEnrichment.scala:178) at com.snowplowanalytics.snowplow.enrich.common.enrichments.EnrichmentManager$$anonfun$4$$anonfun$apply$2.apply(EnrichmentManager.scala:242) at com.snowplowanalytics.snowplow.enrich.common.enrichments.EnrichmentManager$$anonfun$4$$anonfun$apply$2.apply(EnrichmentManager.scala:240) at scala.Option.map(Option.scala:146) at com.snowplowanalytics.snowplow.enrich.common.enrichments.EnrichmentManager$$anonfun$4.apply(EnrichmentManager.scala:240) at com.snowplowanalytics.snowplow.enrich.common.enrichments.EnrichmentManager$$anonfun$4.apply(EnrichmentManager.scala:239) at scala.Option.flatMap(Option.scala:171) at com.snowplowanalytics.snowplow.enrich.common.enrichments.EnrichmentManager$.enrichEvent(EnrichmentManager.scala:239) at com.snowplowanalytics.snowplow.enrich.common.EtlPipeline$$anonfun$1$$anonfun$apply$1$$anonfun$apply$2$$anonfun$apply$3.apply(EtlPipeline.scala:92) at com.snowplowanalytics.snowplow.enrich.common.EtlPipeline$$anonfun$1$$anonfun$apply$1$$anonfun$apply$2$$anonfun$apply$3.apply(EtlPipeline.scala:91) at scalaz.NonEmptyList$class.map(NonEmptyList.scala:23) at scalaz.NonEmptyListFunctions$$anon$4.map(NonEmptyList.scala:207) at com.snowplowanalytics.snowplow.enrich.common.EtlPipeline$$anonfun$1$$anonfun$apply$1$$anonfun$apply$2.apply(EtlPipeline.scala:91) at com.snowplowanalytics.snowplow.enrich.common.EtlPipeline$$anonfun$1$$anonfun$apply$1$$anonfun$apply$2.apply(EtlPipeline.scala:88) at scalaz.Validation$class.map(Validation.scala:112) at scalaz.Success.map(Validation.scala:345) at com.snowplowanalytics.snowplow.enrich.common.EtlPipeline$$anonfun$1$$anonfun$apply$1.apply(EtlPipeline.scala:88) at com.snowplowanalytics.snowplow.enrich.common.EtlPipeline$$anonfun$1$$anonfun$apply$1.apply(EtlPipeline.scala:85) at scala.Option.map(Option.scala:146) at com.snowplowanalytics.snowplow.enrich.common.EtlPipeline$$anonfun$1.apply(EtlPipeline.scala:85) at com.snowplowanalytics.snowplow.enrich.common.EtlPipeline$$anonfun$1.apply(EtlPipeline.scala:82) at scalaz.Validation$class.map(Validation.scala:112) at scalaz.Success.map(Validation.scala:345) at com.snowplowanalytics.snowplow.enrich.common.EtlPipeline$.processEvents(EtlPipeline.scala:82) at com.snowplowanalytics.snowplow.enrich.stream.sources.Source.enrichEvents(Source.scala:137) at com.snowplowanalytics.snowplow.enrich.stream.sources.Source$$anonfun$5.apply(Source.scala:162) at com.snowplowanalytics.snowplow.enrich.stream.sources.Source$$anonfun$5.apply(Source.scala:162) at scala.collection.immutable.List.flatMap(List.scala:338) at com.snowplowanalytics.snowplow.enrich.stream.sources.Source.enrichAndStoreEvents(Source.scala:162) at com.snowplowanalytics.snowplow.enrich.stream.sources.KafkaSource.run(KafkaSource.scala:88) at com.snowplowanalytics.snowplow.enrich.stream.Enrich$class.run(Enrich.scala:73) at com.snowplowanalytics.snowplow.enrich.stream.KafkaEnrich$.run(KafkaEnrich.scala:37) at com.snowplowanalytics.snowplow.enrich.stream.KafkaEnrich$.main(KafkaEnrich.scala:39) at com.snowplowanalytics.snowplow.enrich.stream.KafkaEnrich.main(KafkaEnrich.scala)

I think it’s a related to jackson’s version:

  • jackson.databind 2.3.1
  • jackson.core 2.9.3

Does jackson 2.9.3 support scala 2.11?

Thanks for the help

hey @Hatem_ben, which version of stream enrich are you using? this has been fixed in https://github.com/snowplow/snowplow/issues/3744 and stream enrich 0.16.1.

Hey @BenFradet, thanks for the reply.
I am using stream-enrich 0.1.16

apparently kafka ships with its own version of databind, it has been reported in https://github.com/snowplow/snowplow/issues/3767

Aw i can see it !

When i compile and clean the project, jackson-databind jar version is 2.3.1 and jackson-core is 2.9.1

Another thing please, is there a support of Kafka 1.0.0 ?

yes since release 101: https://snowplowanalytics.com/blog/2018/03/21/snowplow-r101-neapolis-with-initial-gcp-support/#kafka

Hi @BenFradet

May i change Kafka versions from 1.0.1 to 1.0.0 for both Scala Stream Collector 0.13 and Stream Enrich 0.16?

Is it possible ?
Thanks in advance

That’s the great thing with open source, you can fork the github repository, change the kafka version, rebuild the collector and stream enrich and run those forked versions.

1 Like

That’s done great !

Thanks a lot