crate/cratedb-toolkit

[wtf] Improve query library

amotl opened this issue · 4 comments

About

The CrateDB SQL query collection on behalf of library.py, added with GH-88, needs further improvements. It has been assembled from a wave of quick & dirty operations, collected from different sources, without much review.

Details

While working on the code base, @seut discovered a few specific shortcomings in this area. Thank you. Maybe @WalBeh, @hlcianfagna, @hammerhead, or others have something to contribute to answer those questions.

Settings

Why only this small subset of settings? It's also not really dedicated to a concrete topic as both, rebalance and recovery settings are queried.
https://github.com/crate-workbench/cratedb-toolkit/blob/7b4e30525025fa2d310dd8ca8418442d3d5a4977/cratedb_toolkit/wtf/library.py#L369-L383

Shards

This looks unreasonable complicated to just translate the primary boolean into a string.
https://github.com/crate-workbench/cratedb-toolkit/blob/7b4e30525025fa2d310dd8ca8418442d3d5a4977/cratedb_toolkit/wtf/library.py#L422-L439

Why selecting the 2nd decision? This looks problematic e.g. when only 1 shard exists there isn't a 2nd decision.
https://github.com/crate-workbench/cratedb-toolkit/blob/7b4e30525025fa2d310dd8ca8418442d3d5a4977/cratedb_toolkit/wtf/library.py#L534-L543

Isn't the query above more detailed? I think this one can be skipped...
https://github.com/crate-workbench/cratedb-toolkit/blob/7b4e30525025fa2d310dd8ca8418442d3d5a4977/cratedb_toolkit/wtf/library.py#L591-L601

Thoughts

In general, I am happy to remove any item which should be skipped, and improve all others which have shortcomings, into a DWIM shape, based on your suggestions. Thanks already, and thanks in advance!

Not sure how you are using/planning to use the data later on, but for troubleshooting I think it may be best to err on the side of collecting more data rather than less as we do not know initially where issues may be, so regarding cluster settings for instance I would definitely support collecting all of them, that is the entire value in the settings column.

I would also like to add a feature which presents a diff of the current settings against default settings. Do you think this will be possible in any sensible way?

diff of the current settings against default settings. Do you think this will be possible in any sensible way?

Maybe looking at pg_settings ? it has the default values in the reset_val column and the current value in the setting column

Excellent. Thanks for the pointers.