Make THRESHOLD functionality more aggressive
This commit is contained in:
		
							parent
							
								
									91ad4a01cc
								
							
						
					
					
						commit
						1948c32277
					
				
					 3 changed files with 36 additions and 38 deletions
				
			
		
							
								
								
									
										8
									
								
								app.js
									
										
									
									
									
								
							
							
						
						
									
										8
									
								
								app.js
									
										
									
									
									
								
							| 
						 | 
					@ -171,12 +171,8 @@ if (isMaster) {
 | 
				
			||||||
      logger.error("Invalid THRESHOLD config.");
 | 
					      logger.error("Invalid THRESHOLD config.");
 | 
				
			||||||
      process.env.THRESHOLD = undefined;
 | 
					      process.env.THRESHOLD = undefined;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    const dirstat = (await promises.readdir(process.env.TEMPDIR)).map(async (file) => {
 | 
					    const dirstat = (await promises.readdir(process.env.TEMPDIR)).map((file) => {
 | 
				
			||||||
      return new Promise((resolve) => {
 | 
					      return promises.stat(`${process.env.TEMPDIR}/${file}`).then((stats) => stats.size);
 | 
				
			||||||
        promises.stat(`${process.env.TEMPDIR}/${file}`).then((stats) => {
 | 
					 | 
				
			||||||
          resolve(stats.size);
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
      });
 | 
					 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
    const size = await Promise.all(dirstat);
 | 
					    const size = await Promise.all(dirstat);
 | 
				
			||||||
    process.env.DIRSIZECACHE = size.reduce((a, b)=>{
 | 
					    process.env.DIRSIZECACHE = size.reduce((a, b)=>{
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -59,24 +59,25 @@ export default async (client, cluster, worker, ipc, interaction) => {
 | 
				
			||||||
            process.env.DIRSIZECACHE += result.file.length;
 | 
					            process.env.DIRSIZECACHE += result.file.length;
 | 
				
			||||||
            if (process.env.DIRSIZECACHE > process.env.THRESHOLD) {
 | 
					            if (process.env.DIRSIZECACHE > process.env.THRESHOLD) {
 | 
				
			||||||
              const files = (await promises.readdir(process.env.TEMPDIR)).map((file) => {
 | 
					              const files = (await promises.readdir(process.env.TEMPDIR)).map((file) => {
 | 
				
			||||||
                return new Promise((resolve, reject) => {
 | 
					                return promises.stat(`${process.env.TEMPDIR}/${file}`).then((stats) => {
 | 
				
			||||||
                  promises.stat(`${process.env.TEMPDIR}/${file}`).then((fstats)=>{
 | 
					                  return {
 | 
				
			||||||
                    resolve({
 | 
					 | 
				
			||||||
                    name: file,
 | 
					                    name: file,
 | 
				
			||||||
                      size: fstats.size,
 | 
					                    size: stats.size,
 | 
				
			||||||
                      ctime: fstats.ctime
 | 
					                    ctime: stats.ctime
 | 
				
			||||||
                    });
 | 
					                  };
 | 
				
			||||||
                  }).catch(reject);
 | 
					 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
              });
 | 
					              });
 | 
				
			||||||
              Promise.all(files).then((files) => {
 | 
					              const resolvedFiles = await Promise.all(files);
 | 
				
			||||||
                process.env.DIRSIZECACHE = files.reduce((a, b)=>{
 | 
					              process.env.DIRSIZECACHE = resolvedFiles.reduce((a, b)=>{
 | 
				
			||||||
                return a + b.size;
 | 
					                return a + b.size;
 | 
				
			||||||
              }, 0);
 | 
					              }, 0);
 | 
				
			||||||
                const oldestFile = files.sort((a, b) => a.ctime - b.ctime)[0].name;
 | 
					              const oldestFiles = resolvedFiles.sort((a, b) => a.ctime - b.ctime);
 | 
				
			||||||
                promises.rm(`${process.env.TEMPDIR}/${oldestFile}`);
 | 
					              while (process.env.DIRSIZECACHE > process.env.THRESHOLD) {
 | 
				
			||||||
                logger.log(`Removed oldest image file: ${oldestFile}`);
 | 
					                await promises.rm(`${process.env.TEMPDIR}/${oldestFiles[0].name}`);
 | 
				
			||||||
              });
 | 
					                process.env.DIRSIZECACHE -= oldestFiles[0].size;
 | 
				
			||||||
 | 
					                logger.log(`Removed oldest image file: ${oldestFiles[0].name}`);
 | 
				
			||||||
 | 
					                oldestFiles.shift();
 | 
				
			||||||
 | 
					              }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -149,24 +149,25 @@ export default async (client, cluster, worker, ipc, message) => {
 | 
				
			||||||
            process.env.DIRSIZECACHE += result.file.length;
 | 
					            process.env.DIRSIZECACHE += result.file.length;
 | 
				
			||||||
            if (process.env.DIRSIZECACHE > process.env.THRESHOLD) {
 | 
					            if (process.env.DIRSIZECACHE > process.env.THRESHOLD) {
 | 
				
			||||||
              const files = (await promises.readdir(process.env.TEMPDIR)).map((file) => {
 | 
					              const files = (await promises.readdir(process.env.TEMPDIR)).map((file) => {
 | 
				
			||||||
                return new Promise((resolve, reject) => {
 | 
					                return promises.stat(`${process.env.TEMPDIR}/${file}`).then((stats) => {
 | 
				
			||||||
                  promises.stat(`${process.env.TEMPDIR}/${file}`).then((fstats)=>{
 | 
					                  return {
 | 
				
			||||||
                    resolve({
 | 
					 | 
				
			||||||
                    name: file,
 | 
					                    name: file,
 | 
				
			||||||
                      size: fstats.size,
 | 
					                    size: stats.size,
 | 
				
			||||||
                      ctime: fstats.ctime
 | 
					                    ctime: stats.ctime
 | 
				
			||||||
                    });
 | 
					                  };
 | 
				
			||||||
                  }).catch(reject);
 | 
					 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
              });
 | 
					              });
 | 
				
			||||||
              Promise.all(files).then((files) => {
 | 
					              const resolvedFiles = await Promise.all(files);
 | 
				
			||||||
                process.env.DIRSIZECACHE = files.reduce((a, b)=>{
 | 
					              process.env.DIRSIZECACHE = resolvedFiles.reduce((a, b)=>{
 | 
				
			||||||
                return a + b.size;
 | 
					                return a + b.size;
 | 
				
			||||||
              }, 0);
 | 
					              }, 0);
 | 
				
			||||||
                const oldestFile = files.sort((a, b) => a.ctime - b.ctime)[0].name;
 | 
					              const oldestFiles = resolvedFiles.sort((a, b) => a.ctime - b.ctime);
 | 
				
			||||||
                promises.rm(`${process.env.TEMPDIR}/${oldestFile}`);
 | 
					              while (process.env.DIRSIZECACHE > process.env.THRESHOLD) {
 | 
				
			||||||
                log(`Removed oldest image file: ${oldestFile}`);
 | 
					                await promises.rm(`${process.env.TEMPDIR}/${oldestFiles[0].name}`);
 | 
				
			||||||
              });
 | 
					                process.env.DIRSIZECACHE -= oldestFiles[0].size;
 | 
				
			||||||
 | 
					                log(`Removed oldest image file: ${oldestFiles[0].name}`);
 | 
				
			||||||
 | 
					                oldestFiles.shift();
 | 
				
			||||||
 | 
					              }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue