A decentralized music tracking and discovery platform built on AT Protocol 馃幍 rocksky.app
spotify atproto lastfm musicbrainz scrobbling listenbrainz
at main 66 lines 1.7 kB view raw
1import fs from "fs"; 2import path from "path"; 3import os from "os"; 4import { logger } from "logger"; 5 6export function cleanUpJetstreamLockOnExit(did: string) { 7 process.on("exit", async () => { 8 try { 9 await fs.promises.unlink( 10 path.join(os.tmpdir(), `rocksky-jetstream-${did}.lock`), 11 ); 12 process.exit(0); 13 } catch (error) { 14 logger.error`Error cleaning up Jetstream lock: ${error}`; 15 process.exit(1); 16 } 17 }); 18 19 process.on("SIGINT", async () => { 20 try { 21 await fs.promises.unlink( 22 path.join(os.tmpdir(), `rocksky-jetstream-${did}.lock`), 23 ); 24 process.exit(0); 25 } catch (error) { 26 logger.error`Error cleaning up Jetstream lock: ${error}`; 27 process.exit(1); 28 } 29 }); 30 31 process.on("SIGTERM", async () => { 32 try { 33 await fs.promises.unlink( 34 path.join(os.tmpdir(), `rocksky-jetstream-${did}.lock`), 35 ); 36 process.exit(0); 37 } catch (error) { 38 logger.error`Error cleaning up Jetstream lock: ${error}`; 39 process.exit(1); 40 } 41 }); 42 43 process.on("uncaughtException", async () => { 44 try { 45 await fs.promises.unlink( 46 path.join(os.tmpdir(), `rocksky-jetstream-${did}.lock`), 47 ); 48 process.exit(1); 49 } catch (error) { 50 logger.error`Error cleaning up Jetstream lock: ${error}`; 51 process.exit(1); 52 } 53 }); 54 55 process.on("unhandledRejection", async () => { 56 try { 57 await fs.promises.unlink( 58 path.join(os.tmpdir(), `rocksky-jetstream-${did}.lock`), 59 ); 60 process.exit(1); 61 } catch (error) { 62 logger.error`Error cleaning up Jetstream lock: ${error}`; 63 process.exit(1); 64 } 65 }); 66}