mirror of
				https://github.com/zadam/trilium.git
				synced 2025-11-04 13:39:01 +01:00 
			
		
		
		
	fix(server): potential race condition when rotating logs
This commit is contained in:
		
							parent
							
								
									91f3bc4488
								
							
						
					
					
						commit
						d59993abf6
					
				@ -12,7 +12,7 @@ if (!fs.existsSync(dataDir.LOG_DIR)) {
 | 
				
			|||||||
    fs.mkdirSync(dataDir.LOG_DIR, 0o700);
 | 
					    fs.mkdirSync(dataDir.LOG_DIR, 0o700);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
let logFile!: fs.WriteStream;
 | 
					let logFile: fs.WriteStream | undefined;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const SECOND = 1000;
 | 
					const SECOND = 1000;
 | 
				
			||||||
const MINUTE = 60 * SECOND;
 | 
					const MINUTE = 60 * SECOND;
 | 
				
			||||||
@ -107,17 +107,20 @@ function initLogFile() {
 | 
				
			|||||||
    todaysMidnight = getTodaysMidnight();
 | 
					    todaysMidnight = getTodaysMidnight();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const logPath = `${dataDir.LOG_DIR}/trilium-${formatDate()}.log`;
 | 
					    const logPath = `${dataDir.LOG_DIR}/trilium-${formatDate()}.log`;
 | 
				
			||||||
 | 
					    const isRotating = !!logFile;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (logFile) {
 | 
					    if (isRotating) {
 | 
				
			||||||
        logFile.end();
 | 
					        logFile!.end();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Clean up old log files when rotating to a new file
 | 
					    logFile = fs.createWriteStream(logPath, { flags: "a" });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Clean up old log files when rotating to a new file
 | 
				
			||||||
 | 
					    if (isRotating) {
 | 
				
			||||||
        cleanupOldLogFiles().catch(() => {
 | 
					        cleanupOldLogFiles().catch(() => {
 | 
				
			||||||
            // Ignore cleanup errors
 | 
					            // Ignore cleanup errors
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					 | 
				
			||||||
    logFile = fs.createWriteStream(logPath, { flags: "a" });
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function checkDate(millisSinceMidnight: number) {
 | 
					function checkDate(millisSinceMidnight: number) {
 | 
				
			||||||
@ -141,7 +144,7 @@ function log(str: string | Error) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    millisSinceMidnight = checkDate(millisSinceMidnight);
 | 
					    millisSinceMidnight = checkDate(millisSinceMidnight);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    logFile.write(`${formatTime(millisSinceMidnight)} ${str}${EOL}`);
 | 
					    logFile!.write(`${formatTime(millisSinceMidnight)} ${str}${EOL}`);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    console.log(str);
 | 
					    console.log(str);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user