Skip to content

When using a very large argument key icingadb will see a fatal error and quit #791

Closed
@adamparker

Description

@adamparker

Describe the bug

I am uncertain as to whether this is a bug or something that needs more warnings in Icinga.

I was running a check command with a java library that was loaded like this:

java -cp "lib/*" java.class.that.was.used.as.an.argument.that.was.eighty.seven.characters.long.and.broke ....omitted

The class parameter has no flag/option/argument prior, so this may be part of the issue.

In the command template I put this as an argument which all worked fine from the check perspective.

However icingadb didn't like it:

icinga2_icingadb  | 2024-08-15T02:23:41.983Z	WARN	database	Can't execute query. Retrying	{"error": "can't perform \"INSERT INTO \\\"checkcommand_argument\\\" (\\\"argument_key\\\", \\\"description\\\", \\\"set_if\\\", \\\"checkcommand_id\\\", \\\"argument_value\\\", \\\"argument_order\\\", \\\"environment_id\\\", \\\"id\\\", \\\"repeat_key\\\", \\\"required\\\", \\\"skip_key\\\", \\\"properties_checksum\\\", \\\"argument_key_override\\\", \\\"separator\\\") VALUES (:argument_key, :description, :set_if, :checkcommand_id, :argument_value, :argument_order, :environment_id, :id, :repeat_key, :required, :skip_key, :properties_checksum, :argument_key_override, :separator)\": Error 1406 (22001): Data too long for column 'argument_key' at row 10", "errorVerbose": "Error 1406 (22001): Data too long for column 'argument_key' at row 10\ncan't perform \"INSERT INTO \\\"checkcommand_argument\\\" (\\\"argument_key\\\", \\\"description\\\", \\\"set_if\\\", \\\"checkcommand_id\\\", \\\"argument_value\\\", \\\"argument_order\\\", \\\"environment_id\\\", \\\"id\\\", \\\"repeat_key\\\", \\\"required\\\", \\\"skip_key\\\", \\\"properties_checksum\\\", \\\"argument_key_override\\\", \\\"separator\\\") VALUES (:argument_key, :description, :set_if, :checkcommand_id, :argument_value, :argument_order, :environment_id, :id, :repeat_key, :required, :skip_key, :properties_checksum, :argument_key_override, :separator)\"\ngithub.com/icinga/icingadb/internal.CantPerformQuery\n\t/icingadb-src/internal/internal.go:30\ngithub.com/icinga/icingadb/pkg/icingadb.(*DB).NamedBulkExec.func1.(*DB).NamedBulkExec.func1.1.2.1\n\t/icingadb-src/pkg/icingadb/db.go:412\ngithub.com/icinga/icingadb/pkg/retry.WithBackoff\n\t/icingadb-src/pkg/retry/retry.go:60\ngithub.com/icinga/icingadb/pkg/icingadb.(*DB).NamedBulkExec.func1.(*DB).NamedBulkExec.func1.1.2\n\t/icingadb-src/pkg/icingadb/db.go:407\ngolang.org/x/sync/errgroup.(*Group).Go.func1\n\t/go/pkg/mod/golang.org/x/[email protected]/errgroup/errgroup.go:78\nruntime.goexit\n\t/usr/local/go/src/runtime/asm_amd64.s:1695"}
icinga2_icingadb  | 2024-08-15T02:23:41.988Z	INFO	icingadb	Starting state runtime updates sync
icinga2_icingadb  | 2024-08-15T02:23:41.988Z	INFO	config-sync	Finished initial state sync in 40.420509ms
icinga2_icingadb  | 2024-08-15T02:24:21.990Z	INFO	runtime-updates	Upserted 1 ServiceState items
icinga2_icingadb  | 2024-08-15T02:24:31.832Z	INFO	history-sync	Synced 1 state history items
icinga2_icingadb  | 2024-08-15T02:28:41.983Z	WARN	config-sync	Aborted config sync after 5m0.035728203s
icinga2_icingadb  | 2024-08-15T02:28:42.737Z	FATAL	icingadb	Error 1406 (22001): Data too long for column 'argument_key' at row 10
icinga2_icingadb  | can't perform "INSERT INTO \"checkcommand_argument\" (\"argument_key\", \"description\", \"set_if\", \"checkcommand_id\", \"argument_value\", \"argument_order\", \"environment_id\", \"id\", \"repeat_key\", \"required\", \"skip_key\", \"properties_checksum\", \"argument_key_override\", \"separator\") VALUES (:argument_key, :description, :set_if, :checkcommand_id, :argument_value, :argument_order, :environment_id, :id, :repeat_key, :required, :skip_key, :properties_checksum, :argument_key_override, :separator)"
icinga2_icingadb  | github.com/icinga/icingadb/internal.CantPerformQuery
icinga2_icingadb  | 	/icingadb-src/internal/internal.go:30
icinga2_icingadb  | github.com/icinga/icingadb/pkg/icingadb.(*DB).NamedBulkExec.func1.(*DB).NamedBulkExec.func1.1.2.1
icinga2_icingadb  | 	/icingadb-src/pkg/icingadb/db.go:412
icinga2_icingadb  | github.com/icinga/icingadb/pkg/retry.WithBackoff
icinga2_icingadb  | 	/icingadb-src/pkg/retry/retry.go:60
icinga2_icingadb  | github.com/icinga/icingadb/pkg/icingadb.(*DB).NamedBulkExec.func1.(*DB).NamedBulkExec.func1.1.2
icinga2_icingadb  | 	/icingadb-src/pkg/icingadb/db.go:407
icinga2_icingadb  | golang.org/x/sync/errgroup.(*Group).Go.func1
icinga2_icingadb  | 	/go/pkg/mod/golang.org/x/[email protected]/errgroup/errgroup.go:78
icinga2_icingadb  | runtime.goexit
icinga2_icingadb  | 	/usr/local/go/src/runtime/asm_amd64.s:1695
icinga2_icingadb  | retry deadline exceeded
icinga2_icingadb  | github.com/icinga/icingadb/pkg/retry.WithBackoff
icinga2_icingadb  | 	/icingadb-src/pkg/retry/retry.go:95
icinga2_icingadb  | github.com/icinga/icingadb/pkg/icingadb.(*DB).NamedBulkExec.func1.(*DB).NamedBulkExec.func1.1.2
icinga2_icingadb  | 	/icingadb-src/pkg/icingadb/db.go:407
icinga2_icingadb  | golang.org/x/sync/errgroup.(*Group).Go.func1
icinga2_icingadb  | 	/go/pkg/mod/golang.org/x/[email protected]/errgroup/errgroup.go:78
icinga2_icingadb  | runtime.goexit
icinga2_icingadb  | 	/usr/local/go/src/runtime/asm_amd64.s:1695
 arguments += {
    "-cp" = {
      value = CustomPluginDir + "/lib/*"
      order = "-4"
    }
    "java.class.that.was.used.as.an.argument.that.was.eighty.seven.characters.long.and.broke" = {
      order = "-3"
    }
    .... omitted
}

Expected behavior

A warning that argument keys have a limit, or this is a bug.

I have resolved this by using a bash script wrapper. What advice would you give for anyone else who has a similar issue?

Your Environment

Include as many relevant details about the environment you experienced the problem in

Using the following docker images:
"icinga/icingaweb2:2.12.1"
"icinga/icinga2:2.14.2"
"icinga/icingadb:1.2.0"
"redis:7.2.5"

Additional context

I ran this in a docker environment with MySQL.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions