From 50103dcfab9dfdef13cdbb276e0ea7a41ab9ce82 Mon Sep 17 00:00:00 2001 From: Jaco Greeff Date: Fri, 7 Dec 2018 10:07:20 +0100 Subject: [PATCH] WS error logging & stacks trimmed (#448) * Cleanup error stacks * Close error code & reason * Re-add debug throw * Remove stack * Cleanup console checks (bullsh*t, wtf did I add these anyway) --- packages/rpc-core/src/index.ts | 10 ++++--- packages/rpc-provider/src/ws/index.ts | 12 ++++----- packages/rpc-provider/src/ws/onError.spec.js | 27 ------------------- .../src/ws/onMessageResult.spec.js | 14 ---------- .../src/ws/onMessageSubscribe.spec.js | 14 ---------- 5 files changed, 12 insertions(+), 65 deletions(-) delete mode 100644 packages/rpc-provider/src/ws/onError.spec.js diff --git a/packages/rpc-core/src/index.ts b/packages/rpc-core/src/index.ts index cf5e41e6e7..99ac0177cd 100644 --- a/packages/rpc-core/src/index.ts +++ b/packages/rpc-core/src/index.ts @@ -11,7 +11,9 @@ import WsProvider from '@polkadot/rpc-provider/ws'; import { Codec } from '@polkadot/types/types'; import { Vector, createType } from '@polkadot/types/codec'; import { StorageChangeSet, StorageKey } from '@polkadot/types/index'; -import { ExtError, assert, isFunction } from '@polkadot/util'; +import { ExtError, assert, isFunction, logger } from '@polkadot/util'; + +const l = logger('rpc-core'); /** * @name Rpc @@ -111,7 +113,7 @@ export default class Rpc implements RpcInterface { } catch (error) { const message = `${Rpc.signature(method)}:: ${error.message}`; - console.error(message, error); + l.error(message); throw new ExtError(message, (error as ExtError).code, undefined); } @@ -138,7 +140,7 @@ export default class Rpc implements RpcInterface { const paramsJson = params.map((param) => param.toJSON()); const update = (error: Error | null, result?: any) => { if (error) { - console.error(`${Rpc.signature(method)}:: ${error.message}`, error); + l.error(`${Rpc.signature(method)}:: ${error.message}`); return; } @@ -149,7 +151,7 @@ export default class Rpc implements RpcInterface { } catch (error) { const message = `${Rpc.signature(method)}:: ${error.message}`; - console.error(message, error); + l.error(message); throw new ExtError(message, (error as ExtError).code, undefined); } diff --git a/packages/rpc-provider/src/ws/index.ts b/packages/rpc-provider/src/ws/index.ts index d907ecd6d1..dd92b04748 100644 --- a/packages/rpc-provider/src/ws/index.ts +++ b/packages/rpc-provider/src/ws/index.ts @@ -216,7 +216,7 @@ export default class WsProvider implements WSProviderInterface { // a slight complication in solving - since we cannot rely on the send id, but rather // need to find the actual subscription id to map it if (isUndefined(this.subscriptions[subscription])) { - l.warn(`Unable to find active subscription=${subscription}`); + l.debug(() => `Unable to find active subscription=${subscription}`); return false; } @@ -232,8 +232,8 @@ export default class WsProvider implements WSProviderInterface { this._eventemitter.emit(type, ...args); } - private onSocketClose = (): void => { - l.debug(() => ['disconnected from', this.endpoint]); + private onSocketClose = (event: CloseEvent): void => { + l.error(`disconnected from ${this.endpoint}::${event.code}: ${event.reason}`); this._isConnected = false; this.emit('disconnected'); @@ -246,7 +246,7 @@ export default class WsProvider implements WSProviderInterface { } private onSocketError = (error: Event): void => { - l.error(error); + l.debug(() => ['socket error', error]); } private onSocketMessage = (message: MessageEvent): void => { @@ -265,7 +265,7 @@ export default class WsProvider implements WSProviderInterface { const handler = this.handlers[response.id]; if (!handler) { - l.error(`Unable to find handler for id=${response.id}`); + l.debug(() => `Unable to find handler for id=${response.id}`); return; } @@ -297,7 +297,7 @@ export default class WsProvider implements WSProviderInterface { const handler = this.subscriptions[subscription]; if (!handler) { - l.error(`Unable to find handler for subscription=${subscription}`); + l.debug(() => `Unable to find handler for subscription=${subscription}`); return; } diff --git a/packages/rpc-provider/src/ws/onError.spec.js b/packages/rpc-provider/src/ws/onError.spec.js deleted file mode 100644 index e5540129d3..0000000000 --- a/packages/rpc-provider/src/ws/onError.spec.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2017-2018 @polkadot/rpc-provider authors & contributors -// This software may be modified and distributed under the terms -// of the Apache-2.0 license. See the LICENSE file for details. - -import Ws from './index'; - -describe('onError', () => { - let ws; - let errorSpy; - - beforeEach(() => { - ws = new Ws('ws://127.0.0.1:1234', false); - errorSpy = jest.spyOn(console, 'error'); - }); - - afterEach(() => { - errorSpy.mockRestore(); - }); - - it('logs the error', () => { - ws.onSocketError('test error'); - - expect(errorSpy).toHaveBeenCalledWith( - expect.anything(), expect.anything(), 'test error' - ); - }); -}); diff --git a/packages/rpc-provider/src/ws/onMessageResult.spec.js b/packages/rpc-provider/src/ws/onMessageResult.spec.js index 5fbcdb69d4..75c80971c8 100644 --- a/packages/rpc-provider/src/ws/onMessageResult.spec.js +++ b/packages/rpc-provider/src/ws/onMessageResult.spec.js @@ -6,23 +6,9 @@ import Ws from './index'; describe('onMessageResult', () => { let ws; - let errorSpy; beforeEach(() => { ws = new Ws('ws://127.0.0.1:1234', false); - errorSpy = jest.spyOn(console, 'error'); - }); - - afterEach(() => { - errorSpy.mockRestore(); - }); - - it('fails with log when handler not found', () => { - ws.onSocketMessage({ data: '{"id":2}' }); - - expect(errorSpy).toHaveBeenCalledWith( - expect.anything(), expect.anything(), 'Unable to find handler for id=2' - ); }); it('calls the handler when found', (done) => { diff --git a/packages/rpc-provider/src/ws/onMessageSubscribe.spec.js b/packages/rpc-provider/src/ws/onMessageSubscribe.spec.js index 8f04f81e1c..66d2118d28 100644 --- a/packages/rpc-provider/src/ws/onMessageSubscribe.spec.js +++ b/packages/rpc-provider/src/ws/onMessageSubscribe.spec.js @@ -6,23 +6,9 @@ import Ws from './index'; describe('onMessageSubscribe', () => { let ws; - let errorSpy; beforeEach(() => { ws = new Ws('ws://127.0.0.1:1234', false); - errorSpy = jest.spyOn(console, 'error'); - }); - - afterEach(() => { - errorSpy.mockRestore(); - }); - - it('fails with log when handler not found', () => { - ws.onSocketMessage({ data: '{"method":"test","params":{"subscription":2}}' }); - - expect(errorSpy).toHaveBeenCalledWith( - expect.anything(), expect.anything(), 'Unable to find handler for subscription=test::2' - ); }); it('calls the subscriber with data', (done) => {