Jdbc_static filter with multiple parameters crashes

Without the jdbc_static filter this works fine.

input {
	jdbc {
		jdbc_driver_library => "\trunk\Installation\sqljdbc_6.4\enu\mssql-jdbc-6.4.0.jre8.jar"
		jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
		jdbc_connection_string => "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
		jdbc_user => "xxxxxx"
		jdbc_password => "xxxxxxx"
		schedule => "13 09 * * *"
		statement => 
        "
           	SELECT DocumentCreateDateTime, DocumentSigned
			FROM Document
			WHERE DocumentID = 121915
        "
	 }
}
filter {

	mutate {
		convert => {"documentcreatedatetime" => "string"}
	}
	date {
		match => [ "documentcreatedatetime", "ISO8601" ] 
	}
	xml {
		source => "documentsigned"
		target => "invoice"
		remove_namespaces => true
		xpath => [
			"Invoice/ENV/Leverancier/GLN/text()", "gln",
			"Invoice/DET/Artikel/ArtikelcodeLeverancier/text()", "artCodeLev"
		]
	}
	
	jdbc_static {
		loaders => [
			{
				id => "ArtikelLeverancier_id"
				query => "SELECT GLN_leverancier, ArtCodeLev, Kortingsgroep FROM ArtLev ORDER BY Mutatiecode"
				local_table => "ArtikelLeverancier"
			}
		]
		local_db_objects => [
			{
				name => "ArtikelLeverancier"
				columns => [
					["GLN_leverancier", "varchar(13)"],
					["ArtCodeLev", "varchar(20)"],
					["Kortingsgroep", "varchar(35)"]
				]
			}
		]
		local_lookups => [
			{
				id => "local-servers"
				query => "SELECT Kortingsgroep FROM ArtLev WHERE GLN_leverancier = ':gln' AND ArtCodeLev = ':artCode'"
				parameters => {
					gln => "[gln]", 
					artCode => "[artCodeLev]"
				}
				target => "kortingsgroep"
			}
		]
		
		staging_directory => "/tmp/logstash/jdbc_static/import_data"
		loader_schedule => "* */2 * * *"
		jdbc_driver_library => "\trunk\Installation\sqljdbc_6.4\enu\mssql-jdbc-6.4.0.jre8.jar"
		jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
		jdbc_connection_string => "xxxxxxxxxxxxxxxxxxx"
		jdbc_user => "xxxxxxxxxxxxxxxxx"
	}
	
	mutate {
		remove_field => ["documentsigned", "documentout", "invoice"] 
	}
}
output {
	stdout { codec => rubydebug }
}

The crash happens right in the middle of the definition of the parameters:

block in converge_state

I bet it has to do with adding two parameters. There are no examples of two parameters on the internet.

When I remove one of the parameters, it works, but that's not what I want.

So

Two parameters is no problem, just don't add a comma!

2 Likes

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.