Uploaded image for project: 'Debezium'
  1. Debezium
  2. DBZ-1940

[PostgresValueConverter] java.util.NoSuchElementException: No value present

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • Major
    • None
    • 1.0.3.Final
    • postgresql-connector
    • None
    • Hide

      1. Postgresql 9.6
      2. wal2json setup
      3. Replication slot
      4. Create table with numeric datatype
      5. Create table test(id numeric, name varchar(100));
      6. Run with debezium connetor postgresql

      Show
      1. Postgresql 9.6 2. wal2json setup 3. Replication slot 4. Create table with numeric datatype 5. Create table test(id numeric, name varchar(100)); 6. Run with debezium connetor postgresql

    Description

      Found that debezium postgresql connector will hit error when there's no Scale defined for numeric datatype.

      Line 300
      PostgresValueConverter.java

      return SpecialValueDecimal.builder(decimalMode, column.length(), column.scale().get());

      [PostgresValueConverter] java.util.NoSuchElementException: No value present
      2020-04-01 14:58:10.355 ERROR 15100 --- [rce-coordinator] i.d.p.ErrorHandler                       : Producer failure
      
      java.util.NoSuchElementException: No value present
      	at java.util.Optional.get(Optional.java:148) ~[?:?]
      	at io.debezium.connector.postgresql.PostgresValueConverter.numericSchema(PostgresValueConverter.java:306) ~[classes/:?]
      	at io.debezium.connector.postgresql.PostgresValueConverter.schemaBuilder(PostgresValueConverter.java:191) ~[classes/:?]
      	at io.debezium.relational.TableSchemaBuilder.addField(TableSchemaBuilder.java:362) ~[debezium-core-1.0.3.Final.jar:1.0.3.Final]
      	at io.debezium.relational.TableSchemaBuilder.lambda$create$2(TableSchemaBuilder.java:117) ~[debezium-core-1.0.3.Final.jar:1.0.3.Final]
      	at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183) ~[?:?]
      	at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177) ~[?:?]
      	at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1654) ~[?:?]
      	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) ~[?:?]
      	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) ~[?:?]
      	at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150) ~[?:?]
      	at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173) ~[?:?]
      	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?]
      	at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497) ~[?:?]
      	at io.debezium.relational.TableSchemaBuilder.create(TableSchemaBuilder.java:115) ~[debezium-core-1.0.3.Final.jar:1.0.3.Final]
      	at io.debezium.relational.RelationalDatabaseSchema.buildAndRegisterSchema(RelationalDatabaseSchema.java:129) ~[debezium-core-1.0.3.Final.jar:1.0.3.Final]
      	at io.debezium.connector.postgresql.PostgresSchema.refreshSchema(PostgresSchema.java:181) ~[classes/:?]
      	at java.util.concurrent.ConcurrentHashMap$KeySetView.forEach(ConcurrentHashMap.java:4698) ~[?:?]
      	at java.util.Collections$UnmodifiableCollection.forEach(Collections.java:1085) ~[?:?]
      	at io.debezium.connector.postgresql.PostgresSchema.refreshSchemas(PostgresSchema.java:172) ~[classes/:?]
      	at io.debezium.connector.postgresql.PostgresSchema.refresh(PostgresSchema.java:104) ~[classes/:?]
      	at io.debezium.connector.postgresql.PostgresSnapshotChangeEventSource.connectionCreated(PostgresSnapshotChangeEventSource.java:85) ~[classes/:?]
      	at io.debezium.relational.RelationalSnapshotChangeEventSource.execute(RelationalSnapshotChangeEventSource.java:121) ~[debezium-core-1.0.3.Final.jar:1.0.3.Final]
      	at io.debezium.pipeline.ChangeEventSourceCoordinator.lambda$start$0(ChangeEventSourceCoordinator.java:87) ~[debezium-core-1.0.3.Final.jar:1.0.3.Final]
      	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
      	at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:264) [?:?]
      	at java.util.concurrent.FutureTask.run(FutureTask.java) [?:?]
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
      	at java.lang.Thread.run(Thread.java:834) [?:?]
      

      Attachments

        Issue Links

          Activity

            People

              jpechane Jiri Pechanec
              Iskz9802 Iskandar MA (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated: