Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Flags have poor defaults for new deployments #538

Closed
leth opened this issue Aug 10, 2017 · 7 comments
Closed

Flags have poor defaults for new deployments #538

leth opened this issue Aug 10, 2017 · 7 comments

Comments

@leth
Copy link
Contributor

leth commented Aug 10, 2017

When you start cortex for the first time, you end up with a poor set of default flags which do not reflect the ideal way to run cortex. e.g. #489

We also see this when running cortex locally for development, I think I heard @meccanorak discussing it recently.

Obviously, changing the defaults values of flags is a recipie for a bad time, and many sad ops teams, however I think there's a way we can work around this.

  • Add a mandatory "deployment start date" flag which denotes when a deployment began
    • Probably needs to start as optional, and not do anything, then transition to mandatory and functional
    • For ease of local development, accept 'today' as a magic value
  • For flags which improve behaviour, select a date from which they change default value
    • We should not backdate these
  • On startup, compare the "deployment start date" with each flag date, and set the default

What do people think of this idea?
cc @aaron7, @jml, @tomwilkie, @meccanorak

@jml
Copy link
Contributor

jml commented Aug 10, 2017

Could we instead enable the latest schema/table system if there are no explicit date flags, and keep current behaviour if there are?

@leth
Copy link
Contributor Author

leth commented Aug 10, 2017 via email

@tomwilkie
Copy link
Contributor

tomwilkie commented Aug 10, 2017 via email

@meccanorak
Copy link
Contributor

Perhaps digressing....
Must confess to puzzlement over reasoning behind changing default (from true to false) for -dynamodb.use-periodic-tables
Maybe @tomwilkie (or anyone else) could enlighten?

@aaron7
Copy link
Contributor

aaron7 commented Aug 11, 2017

Perhaps digressing....
Must confess to puzzlement over reasoning behind changing default (from true to false) for -dynamodb.use-periodic-tables
Maybe @tomwilkie (or anyone else) could enlighten?

I believe it is because BigTable doesn't require weekly tables.

If you remember, we switch tables weekly for DynamoDB to avoid the number of shards growing too large for a table where throughput is distributed equally among them. This causes problems where we can't optimise throughput capacity if we are hitting one shard more than others. I don't believe BigTable suffers from the same problem, so the default was changed to false, otherwise it would have to be set explicitly to false for BigTable. I believe BigTable still uses the same schema config.

@bboreham
Copy link
Contributor

bboreham commented May 9, 2019

I quite like Marcus' suggestion, but it seems rather complex in practice.

Maybe we could add one big -legacy-flags setting which gives current settings, and if you don't say that then you get a "recommended" set of defaults ?

@tomwilkie
Copy link
Contributor

We’ve got config files now and ship a much more reasonable set of defaults for local dev. I think we can close this now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants