Skip to content

Commit 7e9131d

Browse files
committed
chore(nodejs): improved error handling
1 parent dfdb1ac commit 7e9131d

10 files changed

+40
-47
lines changed

docs/Sender.html

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -322,7 +322,7 @@ <h5>Parameters:</h5>
322322

323323
<dt class="tag-source">Source:</dt>
324324
<dd class="tag-source"><ul class="dummy"><li>
325-
<a href="src_sender.js.html">src/sender.js</a>, <a href="src_sender.js.html#line323">line 323</a>
325+
<a href="src_sender.js.html">src/sender.js</a>, <a href="src_sender.js.html#line328">line 328</a>
326326
</li></ul></dd>
327327

328328

@@ -411,7 +411,7 @@ <h4 class="name" id="atNow"><span class="type-signature"></span>atNow<span class
411411

412412
<dt class="tag-source">Source:</dt>
413413
<dd class="tag-source"><ul class="dummy"><li>
414-
<a href="src_sender.js.html">src/sender.js</a>, <a href="src_sender.js.html#line343">line 343</a>
414+
<a href="src_sender.js.html">src/sender.js</a>, <a href="src_sender.js.html#line348">line 348</a>
415415
</li></ul></dd>
416416

417417

@@ -571,7 +571,7 @@ <h5>Parameters:</h5>
571571

572572
<dt class="tag-source">Source:</dt>
573573
<dd class="tag-source"><ul class="dummy"><li>
574-
<a href="src_sender.js.html">src/sender.js</a>, <a href="src_sender.js.html#line254">line 254</a>
574+
<a href="src_sender.js.html">src/sender.js</a>, <a href="src_sender.js.html#line259">line 259</a>
575575
</li></ul></dd>
576576

577577

@@ -682,7 +682,7 @@ <h4 class="name" id="close"><span class="type-signature">(async) </span>close<sp
682682

683683
<dt class="tag-source">Source:</dt>
684684
<dd class="tag-source"><ul class="dummy"><li>
685-
<a href="src_sender.js.html">src/sender.js</a>, <a href="src_sender.js.html#line146">line 146</a>
685+
<a href="src_sender.js.html">src/sender.js</a>, <a href="src_sender.js.html#line147">line 147</a>
686686
</li></ul></dd>
687687

688688

@@ -1037,7 +1037,7 @@ <h5>Parameters:</h5>
10371037

10381038
<dt class="tag-source">Source:</dt>
10391039
<dd class="tag-source"><ul class="dummy"><li>
1040-
<a href="src_sender.js.html">src/sender.js</a>, <a href="src_sender.js.html#line269">line 269</a>
1040+
<a href="src_sender.js.html">src/sender.js</a>, <a href="src_sender.js.html#line274">line 274</a>
10411041
</li></ul></dd>
10421042

10431043

@@ -1148,7 +1148,7 @@ <h4 class="name" id="flush"><span class="type-signature">(async) </span>flush<sp
11481148

11491149
<dt class="tag-source">Source:</dt>
11501150
<dd class="tag-source"><ul class="dummy"><li>
1151-
<a href="src_sender.js.html">src/sender.js</a>, <a href="src_sender.js.html#line162">line 162</a>
1151+
<a href="src_sender.js.html">src/sender.js</a>, <a href="src_sender.js.html#line163">line 163</a>
11521152
</li></ul></dd>
11531153

11541154

@@ -1330,7 +1330,7 @@ <h5>Parameters:</h5>
13301330

13311331
<dt class="tag-source">Source:</dt>
13321332
<dd class="tag-source"><ul class="dummy"><li>
1333-
<a href="src_sender.js.html">src/sender.js</a>, <a href="src_sender.js.html#line285">line 285</a>
1333+
<a href="src_sender.js.html">src/sender.js</a>, <a href="src_sender.js.html#line290">line 290</a>
13341334
</li></ul></dd>
13351335

13361336

@@ -1762,7 +1762,7 @@ <h5>Parameters:</h5>
17621762

17631763
<dt class="tag-source">Source:</dt>
17641764
<dd class="tag-source"><ul class="dummy"><li>
1765-
<a href="src_sender.js.html">src/sender.js</a>, <a href="src_sender.js.html#line237">line 237</a>
1765+
<a href="src_sender.js.html">src/sender.js</a>, <a href="src_sender.js.html#line242">line 242</a>
17661766
</li></ul></dd>
17671767

17681768

@@ -1944,7 +1944,7 @@ <h5>Parameters:</h5>
19441944

19451945
<dt class="tag-source">Source:</dt>
19461946
<dd class="tag-source"><ul class="dummy"><li>
1947-
<a href="src_sender.js.html">src/sender.js</a>, <a href="src_sender.js.html#line212">line 212</a>
1947+
<a href="src_sender.js.html">src/sender.js</a>, <a href="src_sender.js.html#line217">line 217</a>
19481948
</li></ul></dd>
19491949

19501950

@@ -2103,7 +2103,7 @@ <h5>Parameters:</h5>
21032103

21042104
<dt class="tag-source">Source:</dt>
21052105
<dd class="tag-source"><ul class="dummy"><li>
2106-
<a href="src_sender.js.html">src/sender.js</a>, <a href="src_sender.js.html#line191">line 191</a>
2106+
<a href="src_sender.js.html">src/sender.js</a>, <a href="src_sender.js.html#line196">line 196</a>
21072107
</li></ul></dd>
21082108

21092109

@@ -2285,7 +2285,7 @@ <h5>Parameters:</h5>
22852285

22862286
<dt class="tag-source">Source:</dt>
22872287
<dd class="tag-source"><ul class="dummy"><li>
2288-
<a href="src_sender.js.html">src/sender.js</a>, <a href="src_sender.js.html#line305">line 305</a>
2288+
<a href="src_sender.js.html">src/sender.js</a>, <a href="src_sender.js.html#line310">line 310</a>
22892289
</li></ul></dd>
22902290

22912291

@@ -2359,7 +2359,7 @@ <h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-@q
23592359
<br class="clear">
23602360

23612361
<footer>
2362-
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.11</a> on Mon Aug 15 2022 15:25:19 GMT+0100 (British Summer Time)
2362+
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.11</a> on Tue Aug 16 2022 13:51:43 GMT+0100 (British Summer Time)
23632363
</footer>
23642364

23652365
<script> prettyPrint(); </script>

docs/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ <h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-@q
176176
<br class="clear">
177177

178178
<footer>
179-
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.11</a> on Mon Aug 15 2022 15:25:19 GMT+0100 (British Summer Time)
179+
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.11</a> on Tue Aug 16 2022 13:51:43 GMT+0100 (British Summer Time)
180180
</footer>
181181

182182
<script> prettyPrint(); </script>

docs/index.js.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ <h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-@q
5353
<br class="clear">
5454

5555
<footer>
56-
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.11</a> on Mon Aug 15 2022 15:25:19 GMT+0100 (British Summer Time)
56+
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.11</a> on Tue Aug 16 2022 13:51:43 GMT+0100 (British Summer Time)
5757
</footer>
5858

5959
<script> prettyPrint(); </script>

docs/module-@questdb_nodejs-client.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ <h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-@q
156156
<br class="clear">
157157

158158
<footer>
159-
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.11</a> on Mon Aug 15 2022 15:25:19 GMT+0100 (British Summer Time)
159+
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.11</a> on Tue Aug 16 2022 13:51:43 GMT+0100 (British Summer Time)
160160
</footer>
161161

162162
<script> prettyPrint(); </script>

docs/src_sender.js.html

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ <h1 class="page-title">Source: src/sender.js</h1>
7575
* &lt;/ul>
7676
* &lt;/p>
7777
*/
78-
constructor(options) {
78+
constructor(options = undefined) {
7979
if (options) {
8080
this.jwk = options.jwk;
8181
}
@@ -163,6 +163,7 @@ <h1 class="page-title">Source: src/sender.js</h1>
163163
})
164164
.on("error", err => {
165165
console.error(err);
166+
reject(err);
166167
});
167168
});
168169
}
@@ -194,8 +195,12 @@ <h1 class="page-title">Source: src/sender.js</h1>
194195
}
195196
return new Promise((resolve, reject) => {
196197
this.socket.write(data, err => {
197-
compact(this);
198-
err ? reject(err) : resolve(true);
198+
if (err) {
199+
reject(err);
200+
} else {
201+
compact(this);
202+
resolve(true);
203+
}
199204
});
200205
});
201206
}
@@ -508,7 +513,7 @@ <h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-@q
508513
<br class="clear">
509514

510515
<footer>
511-
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.11</a> on Mon Aug 15 2022 15:25:19 GMT+0100 (British Summer Time)
516+
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.11</a> on Tue Aug 16 2022 13:51:43 GMT+0100 (British Summer Time)
512517
</footer>
513518

514519
<script> prettyPrint(); </script>

notes.md

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,7 @@
22
> ./scripts/generateCerts.sh . questdbPwd123
33
44
### TODO:
5-
- ~~The client should grow the buffer instead of throwing on insufficient buffer size, like other clients do~~
6-
- If the buffer had to be extended, shrink it back to original size on a subsequent flush() call?
7-
- ~~Config object for Sender, make bufferSize optional by setting a default~~
8-
- ~~Github actions to run 'npm test' on each commit and run 'npm publish' when version is bumped in package.json~~
9-
- ~~Provide a builder style API:
10-
builder.table('tab').symbol('symName', any).intColumn('intCol', 34).timestampColumn('tsCol', 23232323).atNow();~~
11-
- ~~The project lacks a linter. Use ESLint (https://eslint.org) or standard (https://standardjs.com)~~
12-
- ~~Run linter in build~~
13-
- ~~Move certs/ under test/ since these are test specific files. Possibly generate certs from test.~~
14-
- Test the client against a real QuestDB instance, not only mock. The easiest way to do it is to use https://www.npmjs.com/package/testcontainers
15-
- ~~authenticate() function doesn't await for sender.socket.write() to happen and doesn't check for errors~~
16-
- ~~Avoid resource leaks on await sender.connect(); await sender.connect();.
17-
As a bonus, we could even protect from concurrent connect calls, e.g. await Promise.all(sender.connect(), sender.connect());~~
18-
- ~~The client should throw Error instances instead of strings.~~
19-
- ~~sender.close() doesn't flush pending data to the socket. We should document this.~~
5+
- Test the client against a real QuestDB instance, not only mock.
6+
The easiest way to do it is to use https://www.npmjs.com/package/testcontainers
207
- Would be nice to accept alternative logger implementations to be used instead of console
21-
- ~~Add 'use strict'; since we are using JS + CommonJS~~
22-
- ~~"Typescript" should be "TypeScript" in the readme~~
23-
- ~~Remove commented code from test/testapp.js~~
24-
- Update node.js examples in QuestDB documentation
25-
- Remove notes.md file
8+
- If the buffer had to be extended, shrink it back to original size on a subsequent flush() call?

src/sender.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ class Sender {
4747
* </ul>
4848
* </p>
4949
*/
50-
constructor(options) {
50+
constructor(options = undefined) {
5151
if (options) {
5252
this.jwk = options.jwk;
5353
}
@@ -135,6 +135,7 @@ class Sender {
135135
})
136136
.on("error", err => {
137137
console.error(err);
138+
reject(err);
138139
});
139140
});
140141
}
@@ -166,8 +167,12 @@ class Sender {
166167
}
167168
return new Promise((resolve, reject) => {
168169
this.socket.write(data, err => {
169-
compact(this);
170-
err ? reject(err) : resolve(true);
170+
if (err) {
171+
reject(err);
172+
} else {
173+
compact(this);
174+
resolve(true);
175+
}
171176
});
172177
});
173178
}

test/proxyfunctions.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ const tls = require('tls');
66
const LOCALHOST = '127.0.0.1';
77

88
async function write(socket, data) {
9-
return new Promise(resolve => {
10-
socket.write(data, 'utf8', () => {
11-
resolve();
9+
return new Promise((resolve, reject) => {
10+
socket.write(data, 'utf8', err => {
11+
err ? reject(err) : resolve();
1212
});
1313
});
1414
}

types/src/sender.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export class Sender {
2929
* </ul>
3030
* </p>
3131
*/
32-
constructor(options: object);
32+
constructor(options?: object);
3333
/** @private */ private jwk;
3434
/** @private */ private socket;
3535
/** @private */ private bufferSize;

types/src/sender.d.ts.map

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

0 commit comments

Comments
 (0)