Expire Flipper cache before Geo promotion mode check
What does this MR do and why?
On a Geo secondary using PostgreSQL logical replication, the features row for the geo_postgresql_replication_agnostic flag replicates instantly, but Flipper still serves reads from its process cache (1 minute) and Redis cache (1 hour). Streaming Geo clears the Redis cache via a replayed event, but logical replication has no equivalent, so the cache can stay stale.
gitlab:geo:set_secondary_as_primary uses this flag to decide whether logical replication is in use. A stale false reading would make it take the streaming path and skip syncing sequences and checking for a live subscription.
This MR adds Feature.expire_cache(key), which expires the flag across Flipper's cache layers. GeoTasks.set_secondary_as_primary calls it right before checking logical replication status, so the read hits the database.
Finding 2 (unreadable sequences) is tracked in #621927 and is out of scope here.
How to set up and validate locally
bin/rspec spec/lib/feature_spec.rb -e expire_cachebin/rspec ee/spec/lib/gitlab/geo/geo_tasks_spec.rb
Resolves Finding 1 of #618092 (closed)