Skip to content

Commit 0f910c3

Browse files
committed
added graceful shutdown for db
1 parent c98a140 commit 0f910c3

File tree

4 files changed

+20
-3
lines changed

4 files changed

+20
-3
lines changed

src/arby.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import { getNewTrade$, GetTradeParams } from './trade/trade';
2121
import { getStartShutdown$ } from './utils';
2222
import { Dictionary, Market } from 'ccxt';
2323
import { verifyMarkets } from './centralized/verify-markets';
24-
import { initDB$, InitDBparams, InitDBResponse } from './db/db';
24+
import { initDB$, InitDBparams, InitDBResponse, closeDB$ } from './db/db';
2525
import { OrderRepository } from './db/order-repository';
2626

2727
type StartArbyParams = {
@@ -135,6 +135,7 @@ export const startArby = ({
135135
loggers,
136136
removeOpenDEXorders$,
137137
removeCEXorders$,
138+
closeDB$,
138139
CEX,
139140
})
140141
).pipe(
@@ -148,6 +149,7 @@ export const startArby = ({
148149
removeOpenDEXorders$,
149150
removeCEXorders$,
150151
CEX,
152+
closeDB$,
151153
});
152154
})
153155
);

src/db/db.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,13 @@ const createModels = (sequelize: Sequelize): InitDBResponse => {
3535
return models;
3636
};
3737

38+
let sequelize: Sequelize;
39+
3840
const initDB$ = ({
3941
logger,
4042
dataDir,
4143
}: InitDBparams): Observable<InitDBResponse> => {
42-
const sequelize = new Sequelize({
44+
sequelize = new Sequelize({
4345
storage: dataDir ? `${dataDir}/arby.db` : undefined,
4446
logging: logger.trace,
4547
dialect: 'sqlite',
@@ -60,4 +62,8 @@ const initDB$ = ({
6062
);
6163
};
6264

63-
export { initDB$, InitDBparams, InitDBResponse };
65+
const closeDB$ = (): Observable<void> => {
66+
return from(sequelize.close());
67+
};
68+
69+
export { initDB$, InitDBparams, InitDBResponse, closeDB$ };

src/opendex/catch-error.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { Logger, Loggers } from '../logger';
1010
import { errorCodes, errors } from '../opendex/errors';
1111
import { GetCleanupParams } from '../trade/cleanup';
1212
import { removeOpenDEXorders$ } from './remove-orders';
13+
import { closeDB$ } from '../db/db';
1314

1415
const catchOpenDEXerror = (
1516
loggers: Loggers,
@@ -73,6 +74,7 @@ const catchOpenDEXerror = (
7374
loggers,
7475
removeOpenDEXorders$,
7576
removeCEXorders$,
77+
closeDB$,
7678
CEX,
7779
}).pipe(ignoreElements()),
7880
timer(RETRY_INTERVAL)

src/trade/cleanup.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ type GetCleanupParams = {
4747
orderId: string
4848
) => Observable<Order>
4949
) => Observable<unknown>;
50+
closeDB$: () => Observable<void>;
5051
CEX: Exchange;
5152
};
5253

@@ -55,6 +56,7 @@ const getCleanup$ = ({
5556
loggers,
5657
removeOpenDEXorders$,
5758
removeCEXorders$,
59+
closeDB$,
5860
CEX,
5961
}: GetCleanupParams): Observable<unknown> => {
6062
const retryOnError = (logger: Logger, source: Observable<any>) => {
@@ -77,6 +79,11 @@ const getCleanup$ = ({
7779
const retryOnErrorOpenDEX = curriedRetryOnError(loggers.opendex);
7880
const retryonErrorCEX = curriedRetryOnError(loggers.centralized);
7981
return combineLatest(
82+
closeDB$().pipe(
83+
tap(() => {
84+
loggers.db.info('DB has been closed');
85+
})
86+
),
8087
removeOpenDEXorders$({
8188
config,
8289
getXudClient$,

0 commit comments

Comments
 (0)