applay-utils 1.9.1 → 1.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/utils/mdb.js +26 -7
- package/utils/querys.js +3 -3
package/package.json
CHANGED
package/utils/mdb.js
CHANGED
|
@@ -50,8 +50,22 @@ var registerShutdownHandlersOnce = () => {
|
|
|
50
50
|
});
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
var
|
|
53
|
+
var pendingConnections = {};
|
|
54
|
+
|
|
55
|
+
// `onError` é opcional (mantém compatibilidade com chamadores antigos que só
|
|
56
|
+
// passavam callback de sucesso). Antes, um erro de conexão (ex: ECONNREFUSED
|
|
57
|
+
// durante failover do replica set) só era logado e o callback nunca era
|
|
58
|
+
// chamado — quem chamava connectAsync ficava com a Promise pendurada para
|
|
59
|
+
// sempre. Além disso, várias chamadas concorrentes para a mesma URL durante
|
|
60
|
+
// uma instabilidade abriam um MongoClient.connect() cada uma (thundering
|
|
61
|
+
// herd); agora elas compartilham a mesma tentativa de conexão em andamento.
|
|
62
|
+
var connect = (alias, url, callback, onError) => {
|
|
54
63
|
if (MDB.status[url]) { return callback(MDB.clients[url]); }
|
|
64
|
+
|
|
65
|
+
if (pendingConnections[url]) {
|
|
66
|
+
return pendingConnections[url].then(callback, (err) => { if (onError) { onError(err); } });
|
|
67
|
+
}
|
|
68
|
+
|
|
55
69
|
console.log('===============>>>>>>> NOVO POOL DE CONEXÃO MDB ', url, alias);
|
|
56
70
|
|
|
57
71
|
const separator = url.includes('?') ? '&' : '/?';
|
|
@@ -59,15 +73,20 @@ var connect = (alias, url, callback) => {
|
|
|
59
73
|
|
|
60
74
|
registerShutdownHandlersOnce();
|
|
61
75
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
76
|
+
pendingConnections[url] = new Promise((resolve, reject) => {
|
|
77
|
+
MongoBase.MongoClient.connect(url + uriparams, (err, client) => {
|
|
78
|
+
delete pendingConnections[url];
|
|
79
|
+
if (err) { console.log('ERRO MDB -- TRACKING -- ', err); return reject(err); }
|
|
80
|
+
MDB.status[url] = true;
|
|
81
|
+
MDB.clients[url] = client;
|
|
82
|
+
resolve(client);
|
|
83
|
+
});
|
|
67
84
|
});
|
|
85
|
+
|
|
86
|
+
pendingConnections[url].then(callback, (err) => { if (onError) { onError(err); } });
|
|
68
87
|
}
|
|
69
88
|
|
|
70
|
-
var connectAsync = (alias, url) => new Promise(resolve => connect(alias, url, (client) => resolve(client)));
|
|
89
|
+
var connectAsync = (alias, url) => new Promise((resolve, reject) => connect(alias, url, (client) => resolve(client), (err) => reject(err)));
|
|
71
90
|
|
|
72
91
|
|
|
73
92
|
var stopCustom = (customCallback) => {
|
package/utils/querys.js
CHANGED
|
@@ -72,7 +72,7 @@ var querys = {
|
|
|
72
72
|
// console.log("🚀 ~ listaOps", listaOps)
|
|
73
73
|
|
|
74
74
|
db.collection(collection).bulkWrite(listaOps, (err, result) => {
|
|
75
|
-
if (err) { console.log('Erro bulkwrite cad: ', err); }
|
|
75
|
+
if (err) { console.log('Erro bulkwrite cad: ', err); return resolve({ status: false, err }); }
|
|
76
76
|
|
|
77
77
|
var ids = result.getInsertedIds();
|
|
78
78
|
ids.forEach(e => dataBuild[e.index]._reg.objId = e._id + '');
|
|
@@ -94,7 +94,7 @@ var querys = {
|
|
|
94
94
|
var listaOps = mdb.genOpsUpdate(data, param);
|
|
95
95
|
// console.log(listaOps)
|
|
96
96
|
db.collection(collection).bulkWrite(listaOps, (err, result) => {
|
|
97
|
-
if (err) { console.log('Erro bulkwrite cad: ', err); }
|
|
97
|
+
if (err) { console.log('Erro bulkwrite cad: ', err); return resolve({ status: false, err }); }
|
|
98
98
|
var result = result.result;
|
|
99
99
|
resolve({ status: true, result });
|
|
100
100
|
});
|
|
@@ -102,7 +102,7 @@ var querys = {
|
|
|
102
102
|
'updateManyAsync':(db,collection,data) => new Promise(resolve=>{
|
|
103
103
|
var listaOps = mdb.genOpsFull(data, 'save');
|
|
104
104
|
db.collection(collection).bulkWrite(listaOps, (err, result) => {
|
|
105
|
-
if (err) { console.log('Erro bulkwrite cad: ', err); }
|
|
105
|
+
if (err) { console.log('Erro bulkwrite cad: ', err); return resolve({status:false,err}); }
|
|
106
106
|
var ids = result.getInsertedIds();
|
|
107
107
|
resolve({status:true,ids:ids});
|
|
108
108
|
});
|