feat(cleanup): sweep completed data at Shanghai midnight
This commit is contained in:
@@ -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 }
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user