Closed trevorgehman closed 1 year ago
if i try to use the command ` i receive this error :
Call to undefined method Laravel\Horizon\Repositories\RedisMetricsRepository::reset()`
Maybe the command must call ::clear()
instead of ::reset()
EDIT: already fixed with this commit https://github.com/laravel/horizon/commit/ded3632dca7fd66618d5b712b4a0c6c1c77ecb3f
Problem
If a Job is renamed or moved, it will persist in Horizon under Metrics and never be removed. This ends up cluttering the Metrics with obsolete jobs. The problem is described in https://github.com/laravel/horizon/issues/1152
Solution
The simplest solution IMO is to just add a command to reset the metrics for Horizon entirely. I've given this command the signature
horizon:reset-metrics
.It will remove all metric data in Horizon's Redis database, including:
measured_jobs
/measured_queues
job:*
/queue:*
snapshot:*
last_snapshot_at
metrics:snapshot
I believe I have covered everything relating to metrics without touching anything else.
Additionally, because I have to search Redis by wildcard to find some of the metrics data, I used SCAN instead of KEYS which is what Redis recommends to prevent locking issues:
After Running Command