Expose DLQ writers to all types of plugins, not just Ruby outputs

Fixes #10749
This commit is contained in:
Rodrigo López Dato 2019-05-02 16:38:27 +01:00 committed by Dan Hermann
parent fe4b6ee308
commit b4f01e88fc

View file

@ -398,18 +398,17 @@ public final class PluginFactoryExt {
public Context toContext(PluginLookup.PluginType pluginType, AbstractNamespacedMetricExt metric) { public Context toContext(PluginLookup.PluginType pluginType, AbstractNamespacedMetricExt metric) {
DeadLetterQueueWriter dlq = NullDeadLetterQueueWriter.getInstance(); DeadLetterQueueWriter dlq = NullDeadLetterQueueWriter.getInstance();
if (pluginType == PluginLookup.PluginType.OUTPUT) { if (dlqWriter instanceof AbstractDeadLetterQueueWriterExt.PluginDeadLetterQueueWriterExt) {
if (dlqWriter instanceof AbstractDeadLetterQueueWriterExt.PluginDeadLetterQueueWriterExt) { IRubyObject innerWriter =
IRubyObject innerWriter = ((AbstractDeadLetterQueueWriterExt.PluginDeadLetterQueueWriterExt) dlqWriter)
((AbstractDeadLetterQueueWriterExt.PluginDeadLetterQueueWriterExt) dlqWriter) .innerWriter(RubyUtil.RUBY.getCurrentContext());
.innerWriter(RubyUtil.RUBY.getCurrentContext()); if (innerWriter != null) {
if (org.logstash.common.io.DeadLetterQueueWriter.class.isAssignableFrom(innerWriter.getJavaClass())) {
if (innerWriter != null) { dlq = new DLQWriterAdapter(innerWriter.toJava(org.logstash.common.io.DeadLetterQueueWriter.class));
if (org.logstash.common.io.DeadLetterQueueWriter.class.isAssignableFrom(innerWriter.getJavaClass())) {
dlq = new DLQWriterAdapter(innerWriter.toJava(org.logstash.common.io.DeadLetterQueueWriter.class));
}
} }
} }
} else if (dlqWriter.getJavaClass().equals(DeadLetterQueueWriter.class)) {
dlq = dlqWriter.toJava(DeadLetterQueueWriter.class);
} }
return new ContextImpl(dlq, new NamespacedMetricImpl(RubyUtil.RUBY.getCurrentContext(), metric)); return new ContextImpl(dlq, new NamespacedMetricImpl(RubyUtil.RUBY.getCurrentContext(), metric));