Skip to content
This repository has been archived by the owner on Dec 16, 2022. It is now read-only.

Slack sync upstream 2018 02 05 #70

Merged
merged 63 commits into from
Feb 5, 2018
Merged

Conversation

demmer
Copy link
Collaborator

@demmer demmer commented Feb 5, 2018

Sync with the latest upstream.

Notable changes that we care about include:

sougou and others added 30 commits January 26, 2018 08:05
CNCF and Google requested that there be an odd number of people on the PMC board.
…period

helm: graceful MySQL termination + PodDisruptionBudgets
Many ORMs (most notably Rails' ActiveRecord and Django) start their
MySQL connections with a `SET sql_auto_is_null=0`.

This setting is superfluous in all MySQL engines that are supported by
Vitess, where `sql_auto_is_null` is always disabled by default.
Furthermore, it doesn't seem feasible to actually implement this feature
in Vitess because of sharded queries.

Because of this, we propose handling the case where the feature is set
to 0 (i.e. a no-op), and returning an explicit error when somebody tries
to actually enable the feature.

This improves the compatibility of Vitess' MySQL layer with these ORMs,
and improves the UX for users attempting to enable `sql_auto_is_null` in
a connection.
vtgate: Handle SET for `sql_auto_is_null`
This reduces the Docker image size from 72 MB to 45 MB
derekperkins and others added 27 commits February 2, 2018 19:48
helm: pass in config.backup to backup-flags
Currently this breaks the backup script, and could possibly cause issues elsewhere
This avoids crash-looping when starting vttablet and mysqld
simultaneously.
This moves a few known limitations to an undocumented features section
Backup: Escape DB name in checkNoDB().
Wait for mysqld to be up before attempting restore.
In order to simulate an infrastructure failure with the topo service,
add a SetError hook to the memorytopo factory with hooks to return the
given error for all calls and propagation to all active watches.
…names

Add support to cache the last value obtained for the SrvKeyspace so vtgate
can continue to route queries for the duration of the cache TTL even when
the local topo service is unavailable.
Separate out the cache TTL from the refresh interval for the keyspace
names caching.

This way during an error state it will not hammer the topo server and
at the same time we can set a long cache TTL to handle potential
topo service unavailability.
Piggybacking on the srv_topo_cache_refresh flag, keep track of the
last time the watch was attempted and don't try to re-establish the
watch until the refresh interval expires.

Also add more error logging and metrics for when the cache is used
for GetSrvKeyspace.
The logic depends on the refresh being smaller than or equal to the
TTL so add a startup assertion that it is configured that way.

Also update all test cases that override the ttl to also override
the refresh interval to avoid hitting this assertion.
…-should-be-more-resilient

add resilient topo server caching for the full srv keyspace object
…_upstream

Allow mysql to be used with a net.Listener created outside the mysql package
@rafael rafael self-requested a review February 5, 2018 19:46
@demmer demmer merged commit edc17cd into master Feb 5, 2018
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants