A decentralized music tracking and discovery platform built on AT Protocol 馃幍
rocksky.app
spotify
atproto
lastfm
musicbrainz
scrobbling
listenbrainz
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}