Commit Graph

51 Commits

Author SHA1 Message Date
6924f1ab15 FIX: Race-condition in fallback handlers (#8005)
Calling `verify_master` in multiple threads simultaneously would cause
multiple threads to be spawned.
2019-08-21 15:47:44 +02:00
30990006a9 DEV: enable frozen string literal on all files
This reduces chances of errors where consumers of strings mutate inputs
and reduces memory usage of the app.

Test suite passes now, but there may be some stuff left, so we will run
a few sites on a branch prior to merging
2019-05-13 09:31:32 +08:00
c96b617bf6 FIX: Don't trigger PG failover when running db:migrate. 2019-05-06 17:03:28 +08:00
bf21ebaecc DEV: Allow custom value when pausing sidekiq to aid in debugging.
Sometimes, it is useful to know what caused Sidekiq to be paused.
2019-02-19 10:55:53 +08:00
fe92b496a7 FIX: Don't clear connections on failover.
Clearing connections can be really slow (up to 10 seconds).
2019-01-22 14:48:01 +08:00
de197000e7 FIX: Clear connections before disabling readonly mode. 2019-01-22 14:14:13 +08:00
426907cb88 FIX: Incorrect subscription in PostgreSQLFallbackHandler. 2019-01-21 17:39:31 +08:00
cc83bc8fcf FIX: Avoid throwing an error when processing PG down message. 2019-01-21 11:48:54 +08:00
ec58c33e9e DEV: Improve postgresql fallover and multisite tests. 2019-01-15 12:52:45 +08:00
08b268c5bc Be more forceful in disconnecting connections during failover. 2018-09-04 10:32:43 +08:00
7c173265d5 FIX: Don't clear connections on the same process. 2018-06-12 13:06:25 +08:00
646ed87aba Clear all connections once master recovers. 2018-06-12 12:13:59 +08:00
fd75e54793 Disconnect the pool during failover and fallback. 2018-06-12 11:09:19 +08:00
a7be68500d Better error reporting in PostgreSQL fallover thread. 2018-06-12 09:39:11 +08:00
2adae2a0b6 FIX: Be more aggressive in checking master when trying to fallback. 2018-06-12 00:09:15 +08:00
c0b0c66a9e FIX: PostgreSQL fallback thread doesn't run server starts in readonly. 2018-06-11 15:23:58 +08:00
d06af14c26 FIX: Notify all processes to fallback when PostgreSQL recovers. 2018-06-11 15:10:28 +08:00
d192924876 FIX: Can't boot Discourse app with read-only PG connection take 2. 2018-06-11 13:25:51 +08:00
5656e8f366 FIX: Can't boot Discourse with a read-only PG connection. 2018-06-11 12:29:23 +08:00
a509f466a0 Expose replica_postgresql_connection to ActiveRecord::Base. 2017-11-24 09:35:45 +08:00
c390169b71 Move monkey patch into freedom_patchers. 2017-11-21 14:15:11 +08:00
337ccfa3a6 MONKEYPATCH: Allow us to disable the use of advisory locks during migration. 2017-11-21 14:06:22 +08:00
54455fa40b Use MessageBus to get other processes to failover faster. 2017-10-23 17:58:24 +08:00
7673684d91 Allow DistributedCache#delete to not publish changes. 2017-10-20 23:03:42 +08:00
fe1e78ddf4 Make PostgreSQL failover work with distributed cache. 2017-10-20 17:15:29 +08:00
d3003592cd Connection may be nil. 2017-10-20 12:10:03 +08:00
057571d173 Raise errors in PostgreSQLFallbackHandler threads. 2017-10-20 12:06:03 +08:00
24e3e321e1 Only initialize distributed cache once. 2017-10-20 07:17:41 +08:00
c7402ef794 FIX: Use a distributed cache to store failover state. 2017-10-20 05:46:19 +08:00
1b5ee0ae72 FIX: Couldn't boot Discourse app with a readonly postgres. 2017-10-17 13:44:30 +08:00
5f76e5062d Pause Sidekiq when postgres failovers. 2017-10-16 19:48:31 +08:00
d4388f54a2 FIX: Use exact patht to ensure we always redirect with the right format. 2017-09-28 10:29:41 +08:00
9540b952fd Fix broken condition in PostgresqlFallbackAdapter. 2017-09-25 13:48:59 +08:00
5012d46cbd Add rubocop to our build. (#5004) 2017-07-28 10:20:09 +09:00
cdd550e947 Use a different Redis key when PG failover sets site to readonly mode. 2017-01-11 16:38:49 +08:00
1e7de826dc FIX: Remove unused code. 2016-11-30 16:39:38 +08:00
f794c25f60 FIX: Ensure a Thread is always running. 2016-11-30 16:38:21 +08:00
e8a3043129 Spawn a single thread that checks for PostgreSQL fallback. 2016-11-17 13:52:08 +08:00
880b7e1053 FIX: Connections were incorrectly going to master when failing over. 2016-05-30 11:50:02 +08:00
86ed6c7d5e Revert "Clear read only timestamp in Redis when switching back to master."
This reverts commit f891430f32a3b8ba9caac20b5ad36621eeadd691.
2016-05-27 18:02:26 +08:00
f891430f32 Clear read only timestamp in Redis when switching back to master. 2016-05-18 10:17:03 +08:00
d783a393ec Fix randomly failing test. 2016-03-08 12:51:51 +08:00
fcc86d3a9d FIX: PostgreSQLFallbackHandler was bouncing in and out of readonly. 2016-03-08 10:02:38 +08:00
b41aa27a84 FEATURE: Support multisite in PostgreSQL fallback adapter. 2016-03-02 21:37:37 +08:00
c344bd3fd1 FIX: Make sure we write inside a lock. 2016-02-23 23:25:59 +08:00
b0d2e69cc3 FIX: Update log level to warn. 2016-02-12 15:18:34 +08:00
74dc838f5f FIX: Add a lock to ensure only a single thread is running each time. 2016-02-05 10:47:47 +08:00
c532d7d1ae Internally AR::Base.establish_connection removes the current connection. 2016-02-05 08:51:50 +08:00
a08496bb1a Remove Concurrent::TimerTask which spawns a long lasting Thread. 2016-02-05 08:51:50 +08:00
0058d09e35 Second attempt which removes any kind proxying. 2016-02-05 08:51:10 +08:00