@@ -38,6 +38,12 @@ var serverCmd = &cobra.Command{
3838 RunE : serverRun ,
3939}
4040
41+ const (
42+ JobLogRetentionTime = 48 * time .Hour
43+ JobLogCleanupDelay = 10 * time .Second
44+ JobLogCleanupInterval = 1 * time .Hour
45+ )
46+
4147var connServerRouter bool
4248var connServerRouterDomainSocket bool
4349var connServerConnName string
@@ -53,6 +59,61 @@ func init() {
5359 rootCmd .AddCommand (serverCmd )
5460}
5561
62+ func cleanupOldJobLogs () {
63+ jobDir := wavebase .GetRemoteJobLogDir ()
64+ entries , err := os .ReadDir (jobDir )
65+ if err != nil {
66+ return
67+ }
68+
69+ cutoffTime := time .Now ().Add (- JobLogRetentionTime )
70+
71+ for _ , entry := range entries {
72+ if entry .IsDir () {
73+ continue
74+ }
75+
76+ name := entry .Name ()
77+ if ! strings .HasSuffix (name , ".log" ) {
78+ continue
79+ }
80+
81+ info , err := entry .Info ()
82+ if err != nil {
83+ continue
84+ }
85+
86+ if info .ModTime ().Before (cutoffTime ) {
87+ filePath := filepath .Join (jobDir , name )
88+ err := os .Remove (filePath )
89+ if err != nil {
90+ log .Printf ("error removing old job log file %s: %v" , filePath , err )
91+ } else {
92+ log .Printf ("removed old job log file: %s" , filePath )
93+ }
94+ }
95+ }
96+ }
97+
98+ func startJobLogCleanup () {
99+ go func () {
100+ defer func () {
101+ panichandler .PanicHandler ("startJobLogCleanup" , recover ())
102+ }()
103+
104+ time .Sleep (JobLogCleanupDelay )
105+
106+ cleanupOldJobLogs ()
107+
108+ ticker := time .NewTicker (JobLogCleanupInterval )
109+ defer ticker .Stop ()
110+
111+ for range ticker .C {
112+ cleanupOldJobLogs ()
113+ }
114+ }()
115+ }
116+
56117func getRemoteDomainSocketName () string {
57118 homeDir := wavebase .GetHomeDir ()
58119 return filepath .Join (homeDir , wavebase .RemoteWaveHomeDirName , wavebase .RemoteDomainSocketBaseName )
@@ -218,6 +279,7 @@ func serverRunRouter() error {
218279 }()
219280 wshremote .RunSysInfoLoop (client , connServerConnName )
220281 }()
282+ startJobLogCleanup ()
221283 log .Printf ("running server, successfully started" )
222284 select {}
223285}
@@ -324,6 +386,7 @@ func serverRunRouterDomainSocket(jwtToken string) error {
324386 }()
325387 wshremote .RunSysInfoLoop (client , connServerConnName )
326388 }()
389+ startJobLogCleanup ()
327390
328391 log .Printf ("running server (router-domainsocket mode), successfully started" )
329392 select {}
@@ -346,6 +409,7 @@ func serverRunNormal(jwtToken string) error {
346409 }()
347410 wshremote .RunSysInfoLoop (RpcClient , RpcContext .Conn )
348411 }()
412+ startJobLogCleanup ()
349413 select {} // run forever
350414}
351415
0 commit comments