Commit Graph

7 Commits

Author SHA1 Message Date
Cody Cutrer 88a5803982 bundle update redis
closes AE-494

[skip-stages=Flakey]
[skip-crystalball]

several things going on here. in general, many of our monkeypatches
have been implemented in upstream, but in a vastly different way, so
we need to enable/configure those things

 * `servers` is no longer accepted as a backwards compatible
   configuration option; use `url`
 * `database` is no longer accepted as a backwards compatible
   configuration option; you _can_ use `db`, but preferable to
   just use `url`
 * no longer merge together redis.yml and cache_store.yml; if one
   references the other, simply use the config from the other
 * `nil_store` is no longer accepted as a backwards compatible
   configuration option; use `null_store` (almost no one should
   be explicitly using this anyway, so nbd)
 * automatically not-even-trying when redis has previously failed
   is now handled by redis-client's circuit breaker. be sure to
   configure it in redis.yml/cache_store.yml/dynamic settings
 * ignoring redis failures completely is already done by
   RedisCacheStore; just rely on that, except for the few cases
   where we use redis directly. some of these now take advantage
   of a new `failsafe` kwarg (and often in combination with
   pipelining), and some just handle it directly
 * move logging to a RedisClient middleware
 * move Twemproxy disallowed commands to a RedisClient middleware
 * simplify Canvas.lookup_cache_store to have far less special casing
   (in particular, patching is done automatically now)
 * add ability to use Redis::Cluster (configure with `nodes` instead
   of `url`)
 * still override Redis::Distributed's HashRing, so that we don't
   change our ring layout with the new MD5 hashing for servers. but
   we got to vastly simplify the new class, due to upstream
   refactorings allowing us to simply override a single method rather
   than having to re-implement the entire class
 * statsd reporting of redis errors is now simply passed as a callback
   to RedisCacheStore, breaking CanvasCache's dependency on InstStatsd

Change-Id: I787672677a21994d40ae304dbac0fbf3a960a779
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/325641
Reviewed-by: Jacob Burroughs <jburroughs@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
Build-Review: Cody Cutrer <cody@instructure.com>
2023-09-28 15:49:47 +00:00
Kyle Rosenbaum a4e1da3aea add the ability to run parallel rspec processes in container
refs DE-225
flag=none

By specifying RSPEC_PROCESSES, we can now run multiple
rspec processes in a single container. This change modifies
the existing database setup to create 1 database per rspec
process. This also impacts results.xml using a 1 results.xml
per rspec process.

Rename database key to db for redis configurations to match
current version of redis.

test plan:
- rspec runs as expected in single threaded mode
- rspec runs as expected in multi threaded mode
- results.xml contains valid results with no duplciate tests
- reruns only run for failing threads
- reruns work in single and multithreaded mode

Change-Id: Ib2e549d467e8a6d8fef9914f2733d9ddfa460e99
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/255120
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Aaron Ogata <aogata@instructure.com>
QA-Review: Kyle Rosenbaum <krosenbaum@instructure.com>
Product-Review: Kyle Rosenbaum <krosenbaum@instructure.com>
2021-01-14 21:12:45 +00:00
Cody Cutrer c9aab282ba use rails built-in RedisCacheStore
RedisStore is no longer supported

somewhat surprisingly, the serialization formats are compatible, so we don't
need to do any namespacing

Change-Id: Iede3a023cada95313875f0ce419b649c364ee97c
Reviewed-on: https://gerrit.instructure.com/202663
Tested-by: Jenkins
Reviewed-by: Rob Orton <rob@instructure.com>
QA-Review: Rob Orton <rob@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
2019-08-09 20:22:56 +00:00
Cody Cutrer c080e37139 move redis logging config to redis.yml
instead of Setting. it's extremely rarely changed, and it's early enough in
the boot process (and part of redis itself) that it can't be cached

Change-Id: Ibdcb3ea025a6b06d204db2a4340d911d9e3f0919
Reviewed-on: https://gerrit.instructure.com/162495
Reviewed-by: Rob Orton <rob@instructure.com>
Tested-by: Jenkins
Product-Review: Cody Cutrer <cody@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
2018-08-29 17:03:51 +00:00
Bryan Madsen 6762d56110 spec: enable redis on travis
Change-Id: If25a8372575241a1196bf426b7165bc120fa270a
Reviewed-on: https://gerrit.instructure.com/28712
Reviewed-by: Brian Palmer <brianp@instructure.com>
Product-Review: Bryan Madsen <bryan@instructure.com>
QA-Review: Bryan Madsen <bryan@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
2014-01-16 22:03:30 +00:00
Brian Palmer 051642f9fc update the comments about redis in the .yml.example files
Change-Id: I373d046162d348492319590ef12f84415afcf159
Reviewed-on: https://gerrit.instructure.com/13796
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
2012-09-24 08:40:36 -06:00
Brian Palmer 8564b1db63 optionally track completed job stats in redis
Right now this is just a data dump, pretty much.

Change-Id: I401cef17e2129556d99ca0a6547ae52712915650
Reviewed-on: https://gerrit.instructure.com/3970
Reviewed-by: Brian Palmer <brianp@instructure.com>
Tested-by: Hudson <hudson@instructure.com>
2011-06-01 10:58:37 -06:00