Jelajahi Sumber

Daemon: avoid "ENOENT reduced.csv" when no reduced data available; Server: Handle no data;

Christian Kahlau 3 tahun lalu
induk
melakukan
2119fadefe

+ 3 - 0
daemon/install/install.sh

@@ -42,6 +42,9 @@ echo "[INSTALL] Transpiling typescript sources of daemon project"
 $EXC_NPM run build
 
 echo "[INSTALL] Installing daemon service application"
+if [ -d "$INSTALL_DIR/dist" ]; then
+  rm -rf "$INSTALL_DIR/dist"
+fi
 cp -rv "dist" "$INSTALL_DIR/"
 cp -v ".env.default" "$INSTALL_DIR/.env"
 cp -v "cpu.sh" "$INSTALL_DIR/"

+ 5 - 0
daemon/src/collector.class.ts

@@ -385,6 +385,11 @@ export class Collector {
         Logger.warn(`[WARN] Transaction rollback succeeded.`);
       }
 
+      if (!fs.existsSync(DATA_REDUCED_FILE)) {
+        // NO DATA
+        return null;
+      }
+
       const hdl = moment().unix();
       this.trx.file = path.resolve(DATA_DIR, `reduced.trx_${hdl.toFixed(0)}.csv`);
       await fsp.rename(DATA_REDUCED_FILE, this.trx.file);

+ 3 - 0
daemon/src/webserver.class.ts

@@ -14,6 +14,9 @@ export class Webserver {
     this.app.get('/', async (req, res, next) => {
       try {
         const hdl = await this.collector.trx.start();
+        if (!hdl) {
+          return res.send({ hdl: null, data: [] });
+        }
         const data = await this.collector.trx.read();
 
         res.send({

+ 3 - 0
server/src/server-connector.class.ts

@@ -40,6 +40,9 @@ export class ServerConnector {
       // Start Transaction, receiving Data and a Transaction Handle
       let response = await axios.get(`http://${server.fqdn}:8890/`, { responseType: 'json' });
       trxHdl = response.data.hdl;
+
+      if (!trxHdl) return; // No data
+
       const data: ReducedData[] = response.data.data.map(entry => ({ ...entry, time: new Date(entry.time) }));
 
       // Process data in DB