Skip to content

Commit ccd3d86

Browse files
authored
build: release beta
2 parents 2830021 + 693d720 commit ccd3d86

File tree

5 files changed

+112
-34
lines changed

5 files changed

+112
-34
lines changed

changelogs/CHANGELOG_alpha.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
# [5.2.0-alpha.1](https://github.com/parse-community/parse-server/compare/5.1.1...5.2.0-alpha.1) (2022-03-23)
2+
3+
4+
### Features
5+
6+
* improved LiveQuery error logging with additional information ([#7837](https://github.com/parse-community/parse-server/issues/7837)) ([443a509](https://github.com/parse-community/parse-server/commit/443a5099059538d379fe491793a5871fcbb4f377))
7+
18
# [5.0.0-alpha.29](https://github.com/parse-community/parse-server/compare/5.0.0-alpha.28...5.0.0-alpha.29) (2022-03-12)
29

310

package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "parse-server",
3-
"version": "5.1.1",
3+
"version": "5.2.0-alpha.1",
44
"description": "An express module providing a Parse-compatible API server",
55
"main": "lib/index.js",
66
"repository": {

spec/ParseLiveQuery.spec.js

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -319,6 +319,41 @@ describe('ParseLiveQuery', function () {
319319
await object.save();
320320
});
321321

322+
it('can log on afterLiveQueryEvent throw', async () => {
323+
await reconfigureServer({
324+
liveQuery: {
325+
classNames: ['TestObject'],
326+
},
327+
startLiveQueryServer: true,
328+
verbose: false,
329+
silent: true,
330+
});
331+
332+
const object = new TestObject();
333+
await object.save();
334+
335+
const logger = require('../lib/logger').logger;
336+
spyOn(logger, 'error').and.callFake(() => {});
337+
338+
let session = undefined;
339+
Parse.Cloud.afterLiveQueryEvent('TestObject', ({ sessionToken }) => {
340+
session = sessionToken;
341+
/* eslint-disable no-undef */
342+
foo.bar();
343+
/* eslint-enable no-undef */
344+
});
345+
346+
const query = new Parse.Query(TestObject);
347+
query.equalTo('objectId', object.id);
348+
const subscription = await query.subscribe();
349+
object.set({ foo: 'bar' });
350+
await object.save();
351+
await new Promise(resolve => subscription.on('error', resolve));
352+
expect(logger.error).toHaveBeenCalledWith(
353+
`Failed running afterLiveQueryEvent on class TestObject for event update with session ${session} with:\n Error: {"message":"foo is not defined","code":141}`
354+
);
355+
});
356+
322357
it('can handle afterEvent sendEvent to false', async done => {
323358
await reconfigureServer({
324359
liveQuery: {
@@ -566,6 +601,33 @@ describe('ParseLiveQuery', function () {
566601
await query.subscribe();
567602
});
568603

604+
it('can log on beforeConnect throw', async () => {
605+
await reconfigureServer({
606+
liveQuery: {
607+
classNames: ['TestObject'],
608+
},
609+
startLiveQueryServer: true,
610+
verbose: false,
611+
silent: true,
612+
});
613+
614+
const logger = require('../lib/logger').logger;
615+
spyOn(logger, 'error').and.callFake(() => {});
616+
let token = undefined;
617+
Parse.Cloud.beforeConnect(({ sessionToken }) => {
618+
token = sessionToken;
619+
/* eslint-disable no-undef */
620+
foo.bar();
621+
/* eslint-enable no-undef */
622+
});
623+
new Parse.Query(TestObject).subscribe();
624+
await new Promise(resolve => Parse.LiveQuery.on('error', resolve));
625+
Parse.LiveQuery.removeAllListeners('error');
626+
expect(logger.error).toHaveBeenCalledWith(
627+
`Failed running beforeConnect for session ${token} with:\n Error: {"message":"foo is not defined","code":141}`
628+
);
629+
});
630+
569631
it('can handle beforeSubscribe error', async done => {
570632
await reconfigureServer({
571633
liveQuery: {
@@ -594,6 +656,34 @@ describe('ParseLiveQuery', function () {
594656
});
595657
});
596658

659+
it('can log on beforeSubscribe error', async () => {
660+
await reconfigureServer({
661+
liveQuery: {
662+
classNames: ['TestObject'],
663+
},
664+
startLiveQueryServer: true,
665+
verbose: false,
666+
silent: true,
667+
});
668+
669+
const logger = require('../lib/logger').logger;
670+
spyOn(logger, 'error').and.callFake(() => {});
671+
672+
Parse.Cloud.beforeSubscribe(TestObject, () => {
673+
/* eslint-disable no-undef */
674+
foo.bar();
675+
/* eslint-enable no-undef */
676+
});
677+
678+
const query = new Parse.Query(TestObject);
679+
const subscription = await query.subscribe();
680+
await new Promise(resolve => subscription.on('error', resolve));
681+
682+
expect(logger.error).toHaveBeenCalledWith(
683+
`Failed running beforeSubscribe on TestObject for session undefined with:\n Error: {"message":"foo is not defined","code":141}`
684+
);
685+
});
686+
597687
it('can handle mutate beforeSubscribe query', async done => {
598688
await reconfigureServer({
599689
liveQuery: {

src/LiveQuery/ParseLiveQueryServer.js

Lines changed: 13 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { ParsePubSub } from './ParsePubSub';
1010
import SchemaController from '../Controllers/SchemaController';
1111
import _ from 'lodash';
1212
import { v4 as uuidv4 } from 'uuid';
13-
import { runLiveQueryEventHandlers, getTrigger, runTrigger, toJSONwithObjects } from '../triggers';
13+
import { runLiveQueryEventHandlers, getTrigger, runTrigger, resolveError, toJSONwithObjects } from '../triggers';
1414
import { getAuthForSessionToken, Auth } from '../Auth';
1515
import { getCacheController } from '../Controllers';
1616
import LRU from 'lru-cache';
@@ -194,14 +194,9 @@ class ParseLiveQueryServer {
194194
delete deletedParseObject.authData;
195195
}
196196
client.pushDelete(requestId, deletedParseObject);
197-
} catch (error) {
198-
Client.pushError(
199-
client.parseWebSocket,
200-
error.code || Parse.Error.SCRIPT_FAILED,
201-
error.message || error,
202-
false,
203-
requestId
204-
);
197+
} catch (e) {
198+
const error = resolveError(e);
199+
Client.pushError(client.parseWebSocket, error.code, error.message, false, requestId);
205200
logger.error(
206201
`Failed running afterLiveQueryEvent on class ${className} for event ${res.event} with session ${res.sessionToken} with:\n Error: ` +
207202
JSON.stringify(error)
@@ -358,14 +353,9 @@ class ParseLiveQueryServer {
358353
if (client[functionName]) {
359354
client[functionName](requestId, currentParseObject, originalParseObject);
360355
}
361-
} catch (error) {
362-
Client.pushError(
363-
client.parseWebSocket,
364-
error.code || Parse.Error.SCRIPT_FAILED,
365-
error.message || error,
366-
false,
367-
requestId
368-
);
356+
} catch (e) {
357+
const error = resolveError(e);
358+
Client.pushError(client.parseWebSocket, error.code, error.message, false, requestId);
369359
logger.error(
370360
`Failed running afterLiveQueryEvent on class ${className} for event ${res.event} with session ${res.sessionToken} with:\n Error: ` +
371361
JSON.stringify(error)
@@ -681,13 +671,9 @@ class ParseLiveQueryServer {
681671
logger.info(`Create new client: ${parseWebsocket.clientId}`);
682672
client.pushConnect();
683673
runLiveQueryEventHandlers(req);
684-
} catch (error) {
685-
Client.pushError(
686-
parseWebsocket,
687-
error.code || Parse.Error.SCRIPT_FAILED,
688-
error.message || error,
689-
false
690-
);
674+
} catch (e) {
675+
const error = resolveError(e);
676+
Client.pushError(parseWebsocket, error.code, error.message, false);
691677
logger.error(
692678
`Failed running beforeConnect for session ${request.sessionToken} with:\n Error: ` +
693679
JSON.stringify(error)
@@ -827,16 +813,11 @@ class ParseLiveQueryServer {
827813
installationId: client.installationId,
828814
});
829815
} catch (e) {
830-
Client.pushError(
831-
parseWebsocket,
832-
e.code || Parse.Error.SCRIPT_FAILED,
833-
e.message || e,
834-
false,
835-
request.requestId
836-
);
816+
const error = resolveError(e);
817+
Client.pushError(parseWebsocket, error.code, error.message, false, request.requestId);
837818
logger.error(
838819
`Failed running beforeSubscribe on ${className} for session ${request.sessionToken} with:\n Error: ` +
839-
JSON.stringify(e)
820+
JSON.stringify(error)
840821
);
841822
}
842823
}

0 commit comments

Comments
 (0)