Open Dandush03 opened 1 week ago
Same MultiDB setup. This fix is not working for me, I get the error
ActiveRecord::ReadOnlyError - Write query attempted while in readonly mode: INSERT INTO solid_cache_entries
solid_cache (1.0.6)
Note there is no error with solid_cache (1.0.2), however the cache is not being populated, ie mysql> select * from solid_cache_entries; Empty set (0.00 sec)
Please can you help
Description
When using Rails' MultiDB configuration with
database_selector
, attempts to delete entries from theSolidCache::Entry
model may result in a read-only error. This issue arises because thedatabase_selector
configuration causes certain operations to route to the replica database, which is read-only.The Error
The following error occurs when the application tries to execute a
DELETE
query in a replica marked as read-only by rails middlewareActionView::Template::Error (Write query attempted while in readonly mode: DELETE FROM "solid_cache_entries" WHERE "solid_cache_entries"."key_hash" = 8850981528477303422)
This error disrupts operations that rely on cache clearing, such as session management or dynamic cache updates.
Reproduction Steps
Add the following configuration to your Rails app:
Configure a primary and replica database in database.yml.
Attempt to delete a cache entry using SolidCache::Entry in a context where the replica database connection is active. Observe the error described above.
Expected Behavior
Cache-related models like SolidCache::Entry should always use the writable primary database for operations that require modifications, regardless of the database_selector configuration.
My current solution:
This ensures that the model is always writable, bypassing the default read-only behavior in a MultiDB setup.