feat(cleanup): sweep completed data at Shanghai midnight

This commit is contained in:
2026-10-11 20:12:43 +08:00
parent 0fa50ad9c5
commit 9b7fd75ca2
12 changed files with 386 additions and 8 deletions
+26
View File
@@ -0,0 +1,26 @@
package main
import (
"context"
"log/slog"
"git.ipao.vip/rogee/go-sip/internal/agent"
"git.ipao.vip/rogee/go-sip/internal/daily"
)
// This owns only local delivered-file cleanup, never RPC/cloud recovery.
func startAgentMidnightCleanup(parent context.Context, root string) func() {
ctx, cancel := context.WithCancel(parent)
done := make(chan struct{})
go func() {
defer close(done)
if err := daily.Run(ctx, func(ctx context.Context) error {
count, err := (&agent.RecordingRecovery{Root: root}).CleanupDelivered(ctx)
slog.InfoContext(ctx, "Agent midnight cleanup finished", "completed_recordings", count, "error", err)
return err
}); err != nil {
slog.Error("Agent midnight cleanup timer failed", "error", err)
}
}()
return func() { cancel(); <-done }
}
+4
View File
@@ -113,6 +113,10 @@ func newAgentCommand() *cobra.Command {
defer listener.Close()
server := grpc.NewServer(grpc.Creds(credentials.NewTLS(serverTLS)), grpc.ChainUnaryInterceptor(logging.UnaryServerInterceptor("agent", "dispatcher")))
agentpb.RegisterAgentControlServiceServer(server, handler)
if settings.RecoveryRoot != "" {
stopCleanup := startAgentMidnightCleanup(cmd.Context(), settings.RecoveryRoot)
defer stopCleanup()
}
if mode == "nonprod-real" {
startRealAgentRecovery(cmd.Context(), settings, recoveryClient, handler)
}