Skip to content

Commit 2d6c32e

Browse files
committed
[DDW-1081] Open pipes between Deadalus↔local-cluster if not isDev; log to files
1 parent 3771a25 commit 2d6c32e

File tree

2 files changed

+57
-32
lines changed

2 files changed

+57
-32
lines changed

source/main/cardano/CardanoNode.ts

Lines changed: 30 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,12 @@ export class CardanoNode {
146146
*/
147147
_cardanoWalletLogFile: WriteStream;
148148

149+
/**
150+
* Log file stream for cardano-wallet
151+
* @private
152+
*/
153+
_mockTokenMetadataServerLogFile: WriteStream;
154+
149155
/**
150156
* The TLS config that is generated by the cardano-node
151157
* on each startup and is broadcasted over ipc channel
@@ -305,41 +311,38 @@ export class CardanoNode {
305311
);
306312

307313
return new Promise(async (resolve, reject) => {
308-
const nodeLogFile = rfs(
309-
(time) => {
310-
// The module works by writing to the one file name before it is rotated out.
311-
if (!time) return 'node.log';
312-
const timestamp = moment.utc().format('YYYYMMDDHHmmss');
313-
return `node.log-${timestamp}`;
314-
},
315-
{
316-
size: '5M',
317-
path: this._config.logFilePath,
318-
maxFiles: 4,
319-
}
320-
);
314+
const mkLogFile = (baseName: string): WriteStream => {
315+
return rfs(
316+
(time) => {
317+
// The module works by writing to the one file name before it is rotated out.
318+
if (!time) return baseName;
319+
const timestamp = moment.utc().format('YYYYMMDDHHmmss');
320+
return `${baseName}-${timestamp}`;
321+
},
322+
{
323+
size: '5M',
324+
path: this._config.logFilePath,
325+
maxFiles: 4,
326+
}
327+
)
328+
};
329+
330+
const nodeLogFile = mkLogFile('node.log');
321331
this._cardanoNodeLogFile = nodeLogFile;
322-
const walletLogFile = rfs(
323-
(time) => {
324-
// The module works by writing to the one file name before it is rotated out.
325-
if (!time) return 'cardano-wallet.log';
326-
const timestamp = moment.utc().format('YYYYMMDDHHmmss');
327-
return `cardano-wallet.log-${timestamp}`;
328-
},
329-
{
330-
size: '5M',
331-
path: this._config.logFilePath,
332-
maxFiles: 4,
333-
}
334-
);
332+
const walletLogFile = mkLogFile('cardano-wallet.log');
335333
this._cardanoWalletLogFile = walletLogFile;
336334

337335
if (isSelfnode) {
338336
try {
337+
const mockTokenMetadataServerLogFile = mkLogFile('mock-token-metadata-server.log');
338+
this._mockTokenMetadataServerLogFile = mockTokenMetadataServerLogFile;
339+
339340
const { selfnodeBin, mockTokenMetadataServerBin } = launcherConfig;
340341
const { node, replyPort } = await CardanoSelfnodeLauncher({
341342
selfnodeBin,
343+
walletLogFile,
342344
mockTokenMetadataServerBin,
345+
mockTokenMetadataServerLogFile,
343346
processName: CARDANO_PROCESS_NAME,
344347
onStop: this._ensureProcessIsNotRunning,
345348
});
@@ -856,6 +859,7 @@ export class CardanoNode {
856859
_reset = () => {
857860
if (this._cardanoNodeLogFile) this._cardanoNodeLogFile.end();
858861
if (this._cardanoWalletLogFile) this._cardanoWalletLogFile.end();
862+
if (this._mockTokenMetadataServerLogFile) this._mockTokenMetadataServerLogFile.end();
859863
if (this._node) this._node = null;
860864
this._tlsConfig = null;
861865
};

source/main/cardano/CardanoSelfnodeLauncher.ts

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { spawn } from 'child_process';
22
import find from 'find-process';
33
import path from 'path';
4-
import fs from 'fs';
4+
import fs, {WriteStream} from 'fs';
55
import which from 'which';
66
import tcpPortUsed from 'tcp-port-used';
77
import type { ChildProcess } from 'child_process';
@@ -12,7 +12,9 @@ import { logger } from '../utils/logging';
1212

1313
export type SelfnodeOptions = {
1414
selfnodeBin: string;
15+
walletLogFile: WriteStream;
1516
mockTokenMetadataServerBin: string;
17+
mockTokenMetadataServerLogFile: WriteStream;
1618
processName: CardanoNodeProcessNames;
1719
onStop: (...args: Array<any>) => any;
1820
};
@@ -44,7 +46,9 @@ export async function CardanoSelfnodeLauncher(
4446
return new Promise(async (resolve, reject) => {
4547
const {
4648
selfnodeBin,
49+
walletLogFile,
4750
mockTokenMetadataServerBin,
51+
mockTokenMetadataServerLogFile,
4852
processName,
4953
onStop,
5054
} = selfnodeOptions;
@@ -55,11 +59,11 @@ export async function CardanoSelfnodeLauncher(
5559
path.resolve(path.join(binDir, 'data', 'cardano-node-shelley')), // Windows installer
5660
path.resolve(path.join(binDir, '..', 'Resources', 'data', 'cardano-node-shelley')), // Darwin installer
5761
// Linux installer substitutes SHELLEY_TEST_DATA in the local-cluster Bash wrapper
58-
'../../utils/cardano/selfnode' // nix-shell
62+
'../../utils/cardano/selfnode' // nix-shell? but nix-shell has the substitute ↑ as well… Some other scenario?
5963
])
6064
})();
6165

62-
setupMockTokenMetadataServer(mockTokenMetadataServerBin);
66+
setupMockTokenMetadataServer(mockTokenMetadataServerBin, mockTokenMetadataServerLogFile);
6367
// @ts-ignore ts-migrate(2322) FIXME: Type '{ pid: number; ppid?: number; uid?: number; ... Remove this comment to see the full error message
6468
const processList: Array<Process> = await find('port', CARDANO_WALLET_PORT);
6569
const isSelfnodeRunning =
@@ -104,11 +108,19 @@ export async function CardanoSelfnodeLauncher(
104108
// for now – @michalrus
105109

106110
// allows Daedalus to exit independently of selfnode (1/3)
107-
stdio: 'ignore', // allows Daedalus to exit independently of selfnode (2/3)
111+
stdio: environment.isDev ? 'ignore' : 'pipe', // 'ignore' allows Daedalus to exit independently of selfnode, 'pipe' kills it on exit (2/3)
108112
});
109113
if (environment.isDev) {
110114
nodeProcess.unref(); // allows Daedalus to exit independently of selfnode (3/3)
111115
}
116+
if (!environment.isDev && nodeProcess.stdout && nodeProcess.stderr && walletLogFile) {
117+
nodeProcess.stdout.on('data', data => {
118+
walletLogFile.write(data);
119+
});
120+
nodeProcess.stderr.on('data', data => {
121+
walletLogFile.write(data);
122+
});
123+
}
112124

113125
const node: Selfnode = setupSelfnode({
114126
processName,
@@ -175,7 +187,8 @@ const setupSelfnode = ({
175187
});
176188

177189
const setupMockTokenMetadataServer = async (
178-
mockTokenMetadataServerBin: string
190+
mockTokenMetadataServerBin: string,
191+
mockTokenMetadataServerLogFile: WriteStream
179192
) => {
180193
const TOKEN_METADATA_REGISTRY = (() => {
181194
const binDir = path.dirname(which.sync(mockTokenMetadataServerBin));
@@ -220,12 +233,20 @@ const setupMockTokenMetadataServer = async (
220233
{
221234
env: { ...process.env },
222235
detached: environment.isDev,
223-
stdio: 'ignore',
236+
stdio: environment.isDev ? 'ignore' : 'pipe',
224237
}
225238
);
226239
if (environment.isDev) {
227240
mockTokenMetadataServerProcess.unref();
228241
}
242+
if (!environment.isDev && mockTokenMetadataServerProcess.stdout && mockTokenMetadataServerProcess.stderr && mockTokenMetadataServerLogFile) {
243+
mockTokenMetadataServerProcess.stdout.on('data', data => {
244+
mockTokenMetadataServerLogFile.write(data);
245+
});
246+
mockTokenMetadataServerProcess.stderr.on('data', data => {
247+
mockTokenMetadataServerLogFile.write(data)
248+
});
249+
}
229250
mockTokenMetadataServer = mockTokenMetadataServerProcess;
230251
}
231252
};

0 commit comments

Comments
 (0)