Critical Fixes (5): - Fix Task.yield_many race condition causing data corruption in DevicePollerWorker - Fix Enum.zip data corruption in SNMP Base Profile with length validation - Fix missing Alert schema fields for check alerts (check_id, severity, etc.) - Fix memory leaks from uncancelled LiveView timers in 4 components - Fix PubSub subscription leak in device form credential testing High Severity Fixes (3): - Fix clock skew bug in needs_discovery? check with DateTime.diff clamping - Fix nil crash in interface status display with proper nil handling - Fix migration index names after equipment→devices table rename Medium Severity Fixes (6): - Fix race condition in device monitor worker (duplicate maintenance checks) - Fix missing preload validation in devices.ex get_org_default_agent - Fix broad rescue clause in alerts.ex with specific error handling - Fix fire-and-forget notification tasks with try-catch error logging - Fix LiveView state bleeding between tabs (assign_new → assign) - Add catch-all handle_info callbacks to 3 LiveViews Infrastructure: - Silence health check endpoint logs (/health, /health/time) - Add migration to fix equipment index names missed in rename Files Changed: 16 files modified, 1 migration added All changes compile successfully and are backward-compatible.
27 lines
1.2 KiB
Elixir
27 lines
1.2 KiB
Elixir
defmodule Towerops.Repo.Migrations.FixEquipmentIndexesAfterRename do
|
|
use Ecto.Migration
|
|
|
|
def up do
|
|
# The 20260115011502_add_alerts_equipment_indexes migration created indexes
|
|
# on the equipment table with equipment-prefixed names.
|
|
# The 20260117190134_rename_equipment_to_devices migration renamed the table
|
|
# but didn't rename these specific indexes.
|
|
|
|
# Rename equipment indexes to device indexes
|
|
execute "ALTER INDEX IF EXISTS idx_equipment_snmp_poll RENAME TO idx_devices_snmp_poll"
|
|
|
|
execute "ALTER INDEX IF EXISTS idx_equipment_snmp_monitoring_site RENAME TO idx_devices_snmp_monitoring_site"
|
|
|
|
# The alerts index references device_id now (column was renamed), but name still says equipment
|
|
execute "ALTER INDEX IF EXISTS idx_alerts_equipment_type_unresolved RENAME TO idx_alerts_device_type_unresolved"
|
|
end
|
|
|
|
def down do
|
|
# Reverse the renames if rolling back
|
|
execute "ALTER INDEX IF EXISTS idx_devices_snmp_poll RENAME TO idx_equipment_snmp_poll"
|
|
|
|
execute "ALTER INDEX IF EXISTS idx_devices_snmp_monitoring_site RENAME TO idx_equipment_snmp_monitoring_site"
|
|
|
|
execute "ALTER INDEX IF EXISTS idx_alerts_device_type_unresolved RENAME TO idx_alerts_equipment_type_unresolved"
|
|
end
|
|
end
|