gemini icon indicating copy to clipboard operation
gemini copied to clipboard

Gemini Crash on Materialized Views Validation

Open CodeLieutenant opened this issue 1 year ago • 0 comments

When running gemini with features=normal, this activates checking of materialized-views and indexes. There is an issue when validating materialized-views rows against oracle (that's a bug), but the gemini crashes when it tries to print the resulting CQL query with a missing field access.

....

 {"L":"INFO","T":"2024-08-27T12:08:11.574Z","N":"work cycle.validation_job","M":"starting validation loop"}
{"L":"INFO","T":"2024-08-27T12:08:12.353Z","N":"work cycle.validation_job","M":"Validation failed. Error: unable to load check data from the oracle store: gocql: expected 4 values send got 5"}
{"L":"INFO","T":"2024-08-27T12:08:12.354Z","N":"work cycle.validation_job","M":"ending validation loop"}
panic: runtime error: index out of range [5] with length 5

goroutine 257576 [running]:
github.com/scylladb/gemini/pkg/typedef.prettyCQL({0xc022c02660, 0x57}, {0xc00b8c14a0, 0x5, 0xcdbb71?}, {0xc023acf040, 0x5, 0x0?})
	/home/runner/work/gemini/gemini/pkg/typedef/typedef.go:214 +0x4c5
github.com/scylladb/gemini/pkg/typedef.(*Stmt).PrettyCQL(0xc011ab38c0)
	/home/runner/work/gemini/gemini/pkg/typedef/typedef.go:97 +0x9e
github.com/scylladb/gemini/pkg/jobs.validationJob({0xe03d60, 0xc0227291d0}, 0xc000450000, _, {0xc000070088, 0xc000070098, {0x1305460, 0x0, 0x0}, 0x1, ...}, ...)
	/home/runner/work/gemini/gemini/pkg/jobs/jobs.go:246 +0x385
github.com/scylladb/gemini/pkg/jobs.List.Run.func2()
	/home/runner/work/gemini/gemini/pkg/jobs/jobs.go:136 +0x10f
golang.org/x/sync/errgroup.(*Group).Go.func1()
	/home/runner/go/pkg/mod/golang.org/x/[email protected]/errgroup/errgroup.go:78 +0x50
created by golang.org/x/sync/errgroup.(*Group).Go in goroutine 1
	/home/runner/go/pkg/mod/golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x96

This is currently reproduced in https://github.com/CodeLieutenant/gemini/actions/runs/10577735511/job/29306371031

The current suggestion (as discussed with @fruch) is to disable materialized-views with a CLI flag and make gemini usable (done in #424), but this should be tackled differently (probably rewrite of the materialized views code in gemini)

CodeLieutenant avatar Sep 12 '24 11:09 CodeLieutenant