logstash-plugins / logstash-filter-dissect

Extract structured fields from an unstructured line
Apache License 2.0
13 stars 22 forks source link

Check empty fields #7

Closed duylong closed 7 years ago

duylong commented 7 years ago

Hi,

I am testing this plugin and I have a error when I dissect a empty field :

[2017-01-16T17:35:11,350][ERROR][logstash.filters.dissect ] Dissect threw an exception {"exception"=>"java.lang.NullPointerException", "backtrace"=>["org.logstash.dissect.ValueResolver.get(ValueResolver.java:18)", "org.logstash.dissect.fields.NormalField.append(NormalField.java:41)", "org.logstash.dissect.Dissector.dissect(Dissector.java:134)", "org.logstash.dissect.JavaDissectorLibrary$RubyDissect.dissect(JavaDissectorLibrary.java:107)", "org.logstash.dissect.JavaDissectorLibrary$RubyDissect.dissect_multi(JavaDissectorLibrary.java:132)", "org.logstash.dissect.JavaDissectorLibrary$RubyDissect$INVOKER$i$2$0$dissect_multi.call(JavaDissectorLibrary$RubyDissect$INVOKER$i$2$0$dissect_multi.gen)", "rubyjit.LogStash::Filters::Dissect$$multi_filter_1131382988356ee038e0c1769e4d4113e6c62a5c312714112.__file__(/usr/share/logstash/vendor/bundle/jruby/1.9/gems/logstash-filter-dissect-1.0.8/lib/logstash/filters/dissect.rb:184)", "rubyjit.LogStash::Filters::Dissect$$multi_filter_1131382988356ee038e0c1769e4d4113e6c62a5c312714112.__file__(/usr/share/logstash/vendor/bundle/jruby/1.9/gems/logstash-filter-dissect-1.0.8/lib/logstash/filters/dissect.rb)", "rubyjit.LogStash::FilterDelegator$$multi_filter_87d312cb29252318f5ba9dfc74f2695ff3ca582a312714112.__file__(/usr/share/logstash/logstash-core/lib/logstash/filter_delegator.rb:41)", "rubyjit.LogStash::FilterDelegator$$multi_filter_87d312cb29252318f5ba9dfc74f2695ff3ca582a312714112.__file__(/usr/share/logstash/logstash-core/lib/logstash/filter_delegator.rb)", "rubyjit.LogStash::Pipeline$$filter_batch_390eee8140cc612b1771fb72e9904822f536cabf312714112.block_0$RUBY$__file__(/usr/share/logstash/logstash-core/lib/logstash/pipeline.rb:295)", "rubyjit.LogStash::Util::WrappedSynchronousQueue::ReadBatch$$each_8ee46fd8c62d1155253b7a084f2e67ff25953d7e312714112.block_0$RUBY$__file__(/usr/share/logstash/logstash-core/lib/logstash/util/wrapped_synchronous_queue.rb:192)", "rubyjit.LogStash::Util::WrappedSynchronousQueue::ReadBatch$$each_8ee46fd8c62d1155253b7a084f2e67ff25953d7e312714112.__file__(/usr/share/logstash/logstash-core/lib/logstash/util/wrapped_synchronous_queue.rb:191)", "rubyjit.LogStash::Util::WrappedSynchronousQueue::ReadBatch$$each_8ee46fd8c62d1155253b7a084f2e67ff25953d7e312714112.__file__(/usr/share/logstash/logstash-core/lib/logstash/util/wrapped_synchronous_queue.rb)", "rubyjit.LogStash::Pipeline$$filter_batch_390eee8140cc612b1771fb72e9904822f536cabf312714112.chained_0_rescue_1$RUBY$SYNTHETIC__file__(/usr/share/logstash/logstash-core/lib/logstash/pipeline.rb:294)", "rubyjit.LogStash::Pipeline$$filter_batch_390eee8140cc612b1771fb72e9904822f536cabf312714112.__file__(/usr/share/logstash/logstash-core/lib/logstash/pipeline.rb)", "rubyjit.LogStash::Pipeline$$filter_batch_390eee8140cc612b1771fb72e9904822f536cabf312714112.__file__(/usr/share/logstash/logstash-core/lib/logstash/pipeline.rb)"]}

I can use if [field] != "" but it would be nice to check again.

guyboertje commented 7 years ago

Good Idea.

guyboertje commented 7 years ago

fixed with #34