Commit 0f78331eb082e1319eae57f20799040e6d812d52

Authored by Adhidarma Hadiwinoto
1 parent 8510bfac57
Exists in master and in 1 other branch dev

Perbaikan symlink last dump

Showing 2 changed files with 4 additions and 18 deletions Inline Diff

lib/core-callback/dumper/req.js
1 const MODULE_NAME = 'CORE-CALLBACK.DUMPER.REQ'; 1 const MODULE_NAME = 'CORE-CALLBACK.DUMPER.REQ';
2 2
3 const fs = require('fs'); 3 const fs = require('fs');
4 const fsPromise = require('fs').promises; 4 const fsPromise = require('fs').promises;
5 const path = require('path'); 5 const path = require('path');
6 const config = require('komodo-sdk/config'); 6 const config = require('komodo-sdk/config');
7 const logger = require('komodo-sdk/logger'); 7 const logger = require('komodo-sdk/logger');
8 const moment = require('moment'); 8 const moment = require('moment');
9 9
10 const baseDumpDir = 'dump'; 10 const baseDumpDir = 'dump';
11 const subBaseDumpDir = path.join(baseDumpDir, 'core-callback'); 11 const subBaseDumpDir = path.join(baseDumpDir, 'core-callback');
12 const lastSymbolicLinkName = path.join(subBaseDumpDir, 'last-req'); 12 const lastDumpFileName = path.join(subBaseDumpDir, 'last-req');
13 13
14 if (!fs.existsSync(baseDumpDir)) { 14 if (!fs.existsSync(baseDumpDir)) {
15 logger.verbose(`${MODULE_NAME} B5785525: Creating base dump dir`); 15 logger.verbose(`${MODULE_NAME} B5785525: Creating base dump dir`);
16 fs.mkdirSync(baseDumpDir); 16 fs.mkdirSync(baseDumpDir);
17 } 17 }
18 18
19 if (!fs.existsSync(subBaseDumpDir)) { 19 if (!fs.existsSync(subBaseDumpDir)) {
20 logger.verbose(`${MODULE_NAME} 13BD289A: Creating dump dir`); 20 logger.verbose(`${MODULE_NAME} 13BD289A: Creating dump dir`);
21 fs.mkdirSync(subBaseDumpDir); 21 fs.mkdirSync(subBaseDumpDir);
22 } 22 }
23 23
24 module.exports = async (req, res, next) => { 24 module.exports = async (req, res, next) => {
25 if ( 25 if (
26 !config 26 !config
27 || !config.listener 27 || !config.listener
28 || !config.listener.core 28 || !config.listener.core
29 || !config.listener.core.dump 29 || !config.listener.core.dump
30 ) { 30 ) {
31 next(); 31 next();
32 return; 32 return;
33 } 33 }
34 34
35 const { xid } = res.locals; 35 const { xid } = res.locals;
36 36
37 const data = `-------- 37 const data = `--------
38 XID: ${xid} 38 XID: ${xid}
39 PID: ${process.pid} 39 PID: ${process.pid}
40 DATE: ${moment().format('YYYY-MM-DD HH:mm:ss.SSS')} 40 DATE: ${moment().format('YYYY-MM-DD HH:mm:ss.SSS')}
41 41
42 REQ-CONTENT-TYPE: ${req.get('content-type')} 42 REQ-CONTENT-TYPE: ${req.get('content-type')}
43 43
44 REQ QUERY-STRING: 44 REQ QUERY-STRING:
45 ${JSON.stringify(req.query, null, 2)} 45 ${JSON.stringify(req.query, null, 2)}
46 46
47 REQ BODY: 47 REQ BODY:
48 ${JSON.stringify(req.body, null, 2)} 48 ${JSON.stringify(req.body, null, 2)}
49 `; 49 `;
50 50
51 const dumpDir = path.join( 51 const dumpDir = path.join(
52 subBaseDumpDir, 52 subBaseDumpDir,
53 moment().format('YYYY-MM-DD'), 53 moment().format('YYYY-MM-DD'),
54 ); 54 );
55 55
56 try { 56 try {
57 await fsPromise.stat(dumpDir); 57 await fsPromise.stat(dumpDir);
58 } catch (e) { 58 } catch (e) {
59 await fsPromise.mkdir(dumpDir, { recursive: true }); 59 await fsPromise.mkdir(dumpDir, { recursive: true });
60 } 60 }
61 61
62 const dumpFileName = path.join( 62 const dumpFileName = path.join(
63 dumpDir, 63 dumpDir,
64 [ 64 [
65 'req', 65 'req',
66 moment().format('YYMMDD_HHmmss_SSS'), 66 moment().format('YYMMDD_HHmmss_SSS'),
67 xid, 67 xid,
68 ].join('_'), 68 ].join('_'),
69 ); 69 );
70 70
71 await fsPromise.writeFile(dumpFileName, data); 71 await fsPromise.writeFile(dumpFileName, data);
72 72 await fsPromise.writeFile(lastDumpFileName, data);
73 try {
74 await fsPromise.unlink(lastSymbolicLinkName);
75 } catch (e) {
76 //
77 }
78
79 await fsPromise.symlink(dumpFileName, lastSymbolicLinkName);
80 73
81 next(); 74 next();
82 }; 75 };
83 76
lib/core-callback/dumper/sender.js
1 const MODULE_NAME = 'CORE-CALLBACK.DUMPER.SENDER'; 1 const MODULE_NAME = 'CORE-CALLBACK.DUMPER.SENDER';
2 2
3 const fs = require('fs'); 3 const fs = require('fs');
4 const fsPromise = require('fs').promises; 4 const fsPromise = require('fs').promises;
5 const path = require('path'); 5 const path = require('path');
6 const config = require('komodo-sdk/config'); 6 const config = require('komodo-sdk/config');
7 const logger = require('komodo-sdk/logger'); 7 const logger = require('komodo-sdk/logger');
8 const moment = require('moment'); 8 const moment = require('moment');
9 9
10 const baseDumpDir = 'dump'; 10 const baseDumpDir = 'dump';
11 const subBaseDumpDir = path.join(baseDumpDir, 'core-callback'); 11 const subBaseDumpDir = path.join(baseDumpDir, 'core-callback');
12 const lastSymbolicLinkName = path.join(subBaseDumpDir, 'last-sent'); 12 const lastDumpFileName = path.join(subBaseDumpDir, 'last-sent');
13 13
14 if (!fs.existsSync(baseDumpDir)) { 14 if (!fs.existsSync(baseDumpDir)) {
15 logger.verbose(`${MODULE_NAME} CE7EA06A: Creating base dump dir`); 15 logger.verbose(`${MODULE_NAME} CE7EA06A: Creating base dump dir`);
16 fs.mkdirSync(baseDumpDir); 16 fs.mkdirSync(baseDumpDir);
17 } 17 }
18 18
19 if (!fs.existsSync(subBaseDumpDir)) { 19 if (!fs.existsSync(subBaseDumpDir)) {
20 logger.verbose(`${MODULE_NAME} A9807434: Creating dump dir`); 20 logger.verbose(`${MODULE_NAME} A9807434: Creating dump dir`);
21 fs.mkdirSync(subBaseDumpDir); 21 fs.mkdirSync(subBaseDumpDir);
22 } 22 }
23 23
24 module.exports = async (xid, httpMethod, endpointUrl, params, axiosResponse, axiosError) => { 24 module.exports = async (xid, httpMethod, endpointUrl, params, axiosResponse, axiosError) => {
25 if ( 25 if (
26 !config 26 !config
27 || !config.listener 27 || !config.listener
28 || !config.listener.core 28 || !config.listener.core
29 || !config.listener.core.dump 29 || !config.listener.core.dump
30 ) { 30 ) {
31 return; 31 return;
32 } 32 }
33 33
34 const data = `-------- 34 const data = `--------
35 XID: ${xid} 35 XID: ${xid}
36 PID: ${process.pid} 36 PID: ${process.pid}
37 DATE: ${moment().format('YYYY-MM-DD HH:mm:ss.SSS')} 37 DATE: ${moment().format('YYYY-MM-DD HH:mm:ss.SSS')}
38 38
39 HTTP METHOD: ${httpMethod} 39 HTTP METHOD: ${httpMethod}
40 ENDPOINT URL: ${endpointUrl} 40 ENDPOINT URL: ${endpointUrl}
41 41
42 REQ PARAMS: 42 REQ PARAMS:
43 ${JSON.stringify(params, null, 2)} 43 ${JSON.stringify(params, null, 2)}
44 44
45 ERROR CODE: ${(axiosError && axiosError.code) || ''} 45 ERROR CODE: ${(axiosError && axiosError.code) || ''}
46 ERROR MESSAGE: ${(axiosError && axiosError.message) || ''} 46 ERROR MESSAGE: ${(axiosError && axiosError.message) || ''}
47 47
48 RES HTTP STATUS: ${axiosResponse && axiosResponse.status} 48 RES HTTP STATUS: ${axiosResponse && axiosResponse.status}
49 RES BODY: 49 RES BODY:
50 ${ 50 ${
51 axiosResponse && axiosResponse.data && ( 51 axiosResponse && axiosResponse.data && (
52 ((typeof axiosResponse.data === 'string') && axiosResponse.data) 52 ((typeof axiosResponse.data === 'string') && axiosResponse.data)
53 || JSON.stringify(axiosResponse.data, null, 2) 53 || JSON.stringify(axiosResponse.data, null, 2)
54 ) 54 )
55 } 55 }
56 `; 56 `;
57 57
58 const dumpDir = path.join( 58 const dumpDir = path.join(
59 subBaseDumpDir, 59 subBaseDumpDir,
60 moment().format('YYYY-MM-DD'), 60 moment().format('YYYY-MM-DD'),
61 ); 61 );
62 62
63 try { 63 try {
64 await fsPromise.stat(dumpDir); 64 await fsPromise.stat(dumpDir);
65 } catch (e) { 65 } catch (e) {
66 await fsPromise.mkdir(dumpDir, { recursive: true }); 66 await fsPromise.mkdir(dumpDir, { recursive: true });
67 } 67 }
68 68
69 const dumpFileName = path.join( 69 const dumpFileName = path.join(
70 dumpDir, 70 dumpDir,
71 [ 71 [
72 'sent', 72 'sent',
73 moment().format('YYMMDD_HHmmss_SSS'), 73 moment().format('YYMMDD_HHmmss_SSS'),
74 xid, 74 xid,
75 ].join('_'), 75 ].join('_'),
76 ); 76 );
77 77
78 await fsPromise.writeFile(dumpFileName, data); 78 await fsPromise.writeFile(dumpFileName, data);
79 79 await fsPromise.writeFile(lastDumpFileName);
80 try {
81 await fsPromise.unlink(lastSymbolicLinkName);
82 } catch (e) {
83 //
84 }
85
86 await fsPromise.symlink(dumpFileName, lastSymbolicLinkName);
87 }; 80 };
88 81