From 44fd5a083009d605ca79f499e44120ea2d13a3af Mon Sep 17 00:00:00 2001 From: Thomas E Lackey Date: Wed, 10 Jun 2020 17:56:08 -0500 Subject: [PATCH] Incremental --- .../src/containers/panels/signal/SignalLog.js | 7 +++-- .../console-app/src/gql/signal_log.graphql | 4 +-- packages/console-app/src/gql/wns_log.graphql | 4 +-- packages/console-app/src/version.json | 2 +- packages/console-server/src/gql/api.graphql | 10 +++---- packages/console-server/src/resolvers/log.js | 27 ++++++++++--------- 6 files changed, 30 insertions(+), 24 deletions(-) diff --git a/packages/console-app/src/containers/panels/signal/SignalLog.js b/packages/console-app/src/containers/panels/signal/SignalLog.js index 0e59248..8a7437f 100644 --- a/packages/console-app/src/containers/panels/signal/SignalLog.js +++ b/packages/console-app/src/containers/panels/signal/SignalLog.js @@ -16,7 +16,10 @@ const oldLines = []; const SignalLog = () => { const { config } = useContext(ConsoleContext); - const data = useQueryStatusReducer(useQuery(SIGNAL_LOG, { pollInterval: config.api.intervalLog })); + const data = useQueryStatusReducer(useQuery(SIGNAL_LOG, { + pollInterval: config.api.intervalLog, + variables: { first: oldLines.length === 0 } + })); if (!data) { return null; } @@ -28,7 +31,7 @@ const SignalLog = () => { } return ( - + ); }; diff --git a/packages/console-app/src/gql/signal_log.graphql b/packages/console-app/src/gql/signal_log.graphql index ea53570..a39a708 100644 --- a/packages/console-app/src/gql/signal_log.graphql +++ b/packages/console-app/src/gql/signal_log.graphql @@ -2,8 +2,8 @@ # Copyright 2020 DxOS.org # -query { - signal_log { +query ($incremental: Boolean) { + signal_log(incremental: $incremental) { timestamp json } diff --git a/packages/console-app/src/gql/wns_log.graphql b/packages/console-app/src/gql/wns_log.graphql index 4c80fdc..4bf829d 100644 --- a/packages/console-app/src/gql/wns_log.graphql +++ b/packages/console-app/src/gql/wns_log.graphql @@ -2,8 +2,8 @@ # Copyright 2020 DxOS.org # -query { - wns_log { +query($incremental: Boolean) { + wns_log(incremental: $incremental) { timestamp json } diff --git a/packages/console-app/src/version.json b/packages/console-app/src/version.json index d120e6d..90b5e24 100644 --- a/packages/console-app/src/version.json +++ b/packages/console-app/src/version.json @@ -1,7 +1,7 @@ { "build": { "name": "@dxos/console-app", - "buildDate": "2020-06-10T22:08:16.919Z", + "buildDate": "2020-06-10T22:43:33.469Z", "version": "1.0.0-beta.0" } } diff --git a/packages/console-server/src/gql/api.graphql b/packages/console-server/src/gql/api.graphql index 5b2cfd5..8f6f991 100644 --- a/packages/console-server/src/gql/api.graphql +++ b/packages/console-server/src/gql/api.graphql @@ -13,16 +13,16 @@ type JSONResult { # type Query { - app_log: JSONResult! + app_log(incremental: Boolean): JSONResult! app_status: JSONResult! - ipfs_log: JSONResult! + ipfs_log(incremental: Boolean): JSONResult! ipfs_status: JSONResult! - ipfs_swarm_log: JSONResult! + ipfs_swarm_log(incremental: Boolean): JSONResult! ipfs_swarm_status: JSONResult! - signal_log: JSONResult! + signal_log(incremental: Boolean): JSONResult! signal_status: JSONResult! system_status: JSONResult! - wns_log: JSONResult! + wns_log(incremental: Boolean): JSONResult! wns_status: JSONResult! } diff --git a/packages/console-server/src/resolvers/log.js b/packages/console-server/src/resolvers/log.js index 9be7ad3..462b783 100644 --- a/packages/console-server/src/resolvers/log.js +++ b/packages/console-server/src/resolvers/log.js @@ -29,6 +29,7 @@ class LogCache { } const _caches = new Map(); + const getLogCache = (name) => { let cache = _caches.get(name); if (!cache) { @@ -38,48 +39,50 @@ const getLogCache = (name) => { return cache; } -const getLogs = async (name, lines = 100) => { +const getLogs = async (name, incremental = false, lines = 100) => { const command = 'wire'; const args = ['service', 'logs', '--lines', lines, name]; const child = spawnSync(command, args, { encoding: 'utf8' }); const logLines = child.stdout.split(/\n/); const cache = getLogCache(name); - return cache.append(logLines); + const added = cache.append(logLines); + + return incremental ? added : Array.from(cache.buffer); }; export const logResolvers = { Query: { - wns_log: async () => { - const logs = await getLogs('wns-lite'); + wns_log: async (_, { incremental }) => { + const logs = await getLogs('wns-lite', incremental); return { timestamp: new Date().toUTCString(), json: JSON.stringify(logs) }; }, - signal_log: async () => { - const logs = await getLogs('signal'); + signal_log: async (_, { incremental }) => { + const logs = await getLogs('signal', incremental); return { timestamp: new Date().toUTCString(), json: JSON.stringify(logs) }; }, - ipfs_log: async () => { - const logs = await getLogs('ipfs'); + ipfs_log: async (_, { incremental }) => { + const logs = await getLogs('ipfs', incremental); return { timestamp: new Date().toUTCString(), json: JSON.stringify(logs) }; }, - ipfs_swarm_log: async () => { - const logs = await getLogs('ipfs'); + ipfs_swarm_log: async (_, { incremental }) => { + const logs = await getLogs('ipfs-swarm-connect', incremental); return { timestamp: new Date().toUTCString(), json: JSON.stringify(logs) }; }, - app_log: async () => { - const logs = await getLogs('ipfs'); + app_log: async (_, { incremental }) => { + const logs = await getLogs('app', incremental); return { timestamp: new Date().toUTCString(), json: JSON.stringify(logs)