@@ -218,78 +218,6 @@ func (s *Sender) processBatch(filePaths []string) error {
218218	return  nil 
219219}
220220
221- // processBufferFile attempts to send all reports from a buffer file (DEPRECATED - kept for compatibility) 
222- // Returns error if any report fails to send (file is kept for retry) 
223- // If file is corrupted, sends N/A metrics and deletes the corrupted file 
224- func  (s  * Sender ) processBufferFile (filePath  string ) error  {
225- 	// Load reports from this file 
226- 	reports , err  :=  s .buffer .LoadFile (filePath )
227- 	if  err  !=  nil  {
228- 		// File is corrupted - send N/A metrics and delete the file 
229- 		logger .Warn ("Corrupted buffer file detected, sending N/A metrics" ,
230- 			logger .String ("file" , filePath ),
231- 			logger .Err (err ))
232- 
233- 		if  sendErr  :=  s .sendCorruptedFileMarker (filePath ); sendErr  !=  nil  {
234- 			logger .Error ("Failed to send N/A marker for corrupted file" ,
235- 				logger .String ("file" , filePath ),
236- 				logger .Err (sendErr ))
237- 			// Continue anyway - we want to delete the corrupted file 
238- 		}
239- 
240- 		// Delete corrupted file to prevent infinite loop 
241- 		if  delErr  :=  s .buffer .DeleteFile (filePath ); delErr  !=  nil  {
242- 			logger .Error ("Failed to delete corrupted buffer file" ,
243- 				logger .String ("file" , filePath ),
244- 				logger .Err (delErr ))
245- 		} else  {
246- 			logger .Info ("Deleted corrupted buffer file" , logger .String ("file" , filePath ))
247- 		}
248- 
249- 		return  nil  // Don't return error - we handled it by deleting 
250- 	}
251- 
252- 	// If no reports in file (empty), just delete it 
253- 	if  len (reports ) ==  0  {
254- 		logger .Warn ("Empty buffer file, deleting" , logger .String ("file" , filePath ))
255- 		if  err  :=  s .buffer .DeleteFile (filePath ); err  !=  nil  {
256- 			logger .Error ("Failed to delete empty buffer file" , logger .String ("file" , filePath ), logger .Err (err ))
257- 		}
258- 		return  nil 
259- 	}
260- 
261- 	// Try to send all reports from this file 
262- 	for  _ , report  :=  range  reports  {
263- 		data , err  :=  report .ToJSON ()
264- 		if  err  !=  nil  {
265- 			logger .Debug ("Failed to marshal buffered report, skipping" , logger .Err (err ))
266- 			continue 
267- 		}
268- 
269- 		// Try to send 
270- 		if  err  :=  s .sendHTTP (data ); err  !=  nil  {
271- 			// Send failed - return error to keep file 
272- 			return  fmt .Errorf ("failed to send report: %w" , err )
273- 		}
274- 
275- 		logger .Debug ("Successfully sent buffered report" , logger .String ("server_id" , report .ServerID ))
276- 	}
277- 
278- 	// All reports sent successfully - delete the file 
279- 	if  err  :=  s .buffer .DeleteFile (filePath ); err  !=  nil  {
280- 		logger .Error ("Failed to delete buffer file after successful send" , logger .String ("file" , filePath ), logger .Err (err ))
281- 	} else  {
282- 		logger .Info ("Successfully drained buffer file" , logger .String ("file" , filePath ), logger .Int ("reports" , len (reports )))
283- 	}
284- 
285- 	// Periodically clean up old buffer files 
286- 	if  err  :=  s .buffer .Cleanup (); err  !=  nil  {
287- 		logger .Warn ("Failed to cleanup old buffer files" , logger .Err (err ))
288- 	}
289- 
290- 	return  nil 
291- }
292- 
293221// sendBatch sends an array of reports to the server 
294222func  (s  * Sender ) sendBatch (reports  []* metrics.Report ) error  {
295223	// Marshal array of reports to JSON 
@@ -327,43 +255,6 @@ func (s *Sender) createNAReport() *metrics.Report {
327255	}
328256}
329257
330- // sendCorruptedFileMarker sends a report with all metrics set to null (N/A) 
331- // This keeps the timeline intact when a corrupted buffer file is encountered 
332- func  (s  * Sender ) sendCorruptedFileMarker (filePath  string ) error  {
333- 	// Get hostname for the report 
334- 	hostname , err  :=  os .Hostname ()
335- 	if  err  !=  nil  {
336- 		hostname  =  "unknown" 
337- 	}
338- 
339- 	// Create a report with all null metrics 
340- 	naReport  :=  & metrics.Report {
341- 		ServerID :   s .config .Agent .ServerID ,
342- 		Timestamp :  time .Now ().UTC ().Format (time .RFC3339 ),
343- 		Hostname :   hostname ,
344- 		SystemInfo : nil , // Will serialize as null 
345- 		CPU :        nil ,
346- 		Memory :     nil ,
347- 		Disk :       nil ,
348- 		Network :    nil ,
349- 		Uptime :     nil ,
350- 		Processes :  nil ,
351- 	}
352- 
353- 	data , err  :=  naReport .ToJSON ()
354- 	if  err  !=  nil  {
355- 		return  fmt .Errorf ("failed to marshal N/A report: %w" , err )
356- 	}
357- 
358- 	// Send the N/A marker 
359- 	if  err  :=  s .sendHTTP (data ); err  !=  nil  {
360- 		return  fmt .Errorf ("failed to send N/A marker: %w" , err )
361- 	}
362- 
363- 	logger .Info ("Sent N/A metrics marker for corrupted file" , logger .String ("file" , filePath ))
364- 	return  nil 
365- }
366- 
367258// randomDelay waits for a random duration between 0 and the configured interval 
368259// This distributes load across the interval window 
369260func  (s  * Sender ) randomDelay () {
0 commit comments