Spaces:
				
			
			
	
			
			
		Paused
		
	
	
	
			
			
	
	
	
	
		
		
		Paused
		
	Liam Dyer
				
			
		feat: allow disabling metrics server, consolidate exit handlers (#1201)
		dc1fb76
		unverified
		| // Shouldn't be needed if we dove into sveltekit internals, see https://github.com/huggingface/chat-ui/pull/88#issuecomment-1523173850 | |
| import { logger } from "$lib/server/logger"; | |
| import { collections } from "$lib/server/database"; | |
| import { onExit } from "./exitHandler"; | |
| export class AbortedGenerations { | |
| private static instance: AbortedGenerations; | |
| private abortedGenerations: Map<string, Date> = new Map(); | |
| private constructor() { | |
| const interval = setInterval(this.updateList, 1000); | |
| onExit(() => clearInterval(interval)); | |
| } | |
| public static getInstance(): AbortedGenerations { | |
| if (!AbortedGenerations.instance) { | |
| AbortedGenerations.instance = new AbortedGenerations(); | |
| } | |
| return AbortedGenerations.instance; | |
| } | |
| public getList(): Map<string, Date> { | |
| return this.abortedGenerations; | |
| } | |
| private async updateList() { | |
| try { | |
| const aborts = await collections.abortedGenerations.find({}).sort({ createdAt: 1 }).toArray(); | |
| this.abortedGenerations = new Map( | |
| aborts.map(({ conversationId, createdAt }) => [conversationId.toString(), createdAt]) | |
| ); | |
| } catch (err) { | |
| logger.error(err); | |
| } | |
| } | |
| } | |
 
			
