Closed sakama closed 7 years ago
@sakama Is this PR ready for review?
I don't have perfect confident and will test again.
@dmikurube At least, I can insert data as expected without any failures. Could you take a look?
I just wanted to left comments:
null
value if isNull
returns true
. Not empty string.@sakama That SinglePageRecordReader
is really just forwarding method calls into PageReader
. If this is a problem, I'm afraid we need to fix Embulk's PageReader
instead. What do you think? Cc: @muga
@dmikurube Agreed. https://github.com/embulk/embulk/pull/654
@muga lgtm'ed the PR on embulk/embulk.
@sakama If we still need an immediate workaround, I'd merge this when a comment is appended to describe it's just a workaround (with a link to an issue or this PR).
I checked https://github.com/embulk/embulk/pull/654 at my env.
I got NullPointerException
instead of ArrayIndexOutOfBoundsException
.
This should valid behavior and I think I can avoid by adding null check at JacksonAllInObjectScope
.
I'll create another PR instead of this PR.
Caused by: java.lang.NullPointerException
at org.embulk.spi.time.TimestampFormatter.format(TimestampFormatter.java:93)
at org.embulk.base.restclient.jackson.scope.JacksonAllInObjectScope$1.timestampColumn(JacksonAllInObjectScope.java:74)
at org.embulk.spi.Column.visit(Column.java:60)
at org.embulk.spi.Schema.visitColumns(Schema.java:81)
at org.embulk.base.restclient.jackson.scope.JacksonAllInObjectScope.scopeObject(JacksonAllInObjectScope.java:36)
at org.embulk.base.restclient.jackson.scope.JacksonObjectScopeBase.scopeEmbulkValues(JacksonObjectScopeBase.java:17)
at org.embulk.base.restclient.jackson.scope.JacksonObjectScopeBase.scopeEmbulkValues(JacksonObjectScopeBase.java:9)
at org.embulk.base.restclient.record.ValueExporter.exportValueToBuildRecord(ValueExporter.java:14)
at org.embulk.base.restclient.record.RecordExporter.exportRecord(RecordExporter.java:18)
at org.embulk.base.restclient.RestClientPageOutput.add(RestClientPageOutput.java:43)
at org.embulk.exec.LocalExecutorPlugin$ScatterTransactionalPageOutput$OutputWorker.call(LocalExecutorPlugin.java:394)
at org.embulk.exec.LocalExecutorPlugin$ScatterTransactionalPageOutput$OutputWorker.call(LocalExecutorPlugin.java:319)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Suppressed: java.lang.NullPointerException
... 16 more
Suppressed: java.lang.NullPointerException
... 16 more
Suppressed: java.lang.NullPointerException
... 16 more
@sakama Ah, that sounds the right fix. Thanks!
@sakama good catch 👍
I'm using embulk-base-resetclient with embulk-output-elasticsearch.
I sometimes got ArrayIndexOutOfBoundsException while exporting to Es server. I'm using embulk-base-resetclient v0.4.2 for now, but confirmed that also happens with v0.5.1. It seems that failure happens when msgpack formatted file contains empty String column.
This problem never happens when source file is (JSON|CSV), only happens with MessagePack formatted files. Then, I may need to fix embulk-parser-msgpack.
Stacktrace