@steedos/service-metadata 2.1.49 → 2.1.53

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.
@@ -1,12 +1,18 @@
1
+ declare function clearPackageServices(ctx: any, packageServices: any): Promise<void>;
2
+ declare function clearPackageServicesMetadatas(ctx: any, offlinePackageServices: any): Promise<void>;
1
3
  export declare function started(broker: any): Promise<void>;
2
4
  export declare function stopped(broker: any): Promise<void>;
3
5
  export declare const ActionHandlers: {
6
+ clearPackageServices: typeof clearPackageServices;
7
+ clearPackageServicesMetadatas: typeof clearPackageServicesMetadatas;
4
8
  get(ctx: any): Promise<any>;
5
9
  filter(ctx: any): Promise<Array<any>>;
6
10
  add(ctx: any): Promise<any>;
7
11
  addServiceMetadata(ctx: any): Promise<void>;
12
+ fuzzyDelete(ctx: any): Promise<void>;
8
13
  delete(ctx: any): Promise<boolean>;
9
14
  getServiceMetadatas(ctx: any): Promise<any[]>;
10
15
  getServiceMetadata(ctx: any): Promise<any>;
11
16
  refreshServiceMetadatas(ctx: any): Promise<void>;
12
17
  };
18
+ export {};
@@ -7,76 +7,81 @@ const PACKAGE_SERVICES_KEY = '$PACKAGE-SERVICES';
7
7
  const PACKAGE_SERVICE_PREFIX = '~packages-';
8
8
  const METADATA_SERVICES_PERFIX = '$METADATA-SERVICES';
9
9
  const _ = require("underscore");
10
+ let savePackageServicesTimeoutID = null;
10
11
  //////////////// mock for redis cacher ////////////////
11
- let mockCacherData = [];
12
- let mock_prefix = "";
13
- function mockCacherGet(ctx, key) {
14
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
15
- return yield ctx.broker.cacher.get(key);
16
- });
17
- }
18
- // 支持 * 通配符
19
- function mockCacherKeys(ctx, key) {
20
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
21
- // // 原来是:
22
- // const broker_res = await ctx.broker.cacher.client.keys(key);
23
- const regex_key = "^" + key.split(".").join("\\.").split("*").join(".+").split("$").join("\\$") + "$";
24
- const reg = new RegExp(regex_key);
25
- const keys = mockCacherData.filter(item => reg.test(item));
26
- // const diff_d = _.difference(broker_res, keys); // 差错 diff 代码
27
- // if (diff_d.length > 0) {
28
- // console.log("diff is",key, diff_d);
29
- // console.log("* is", key,await ctx.broker.cacher.client.keys("*"));
30
- // console.log("my is",key, mockCacherData);
31
- // process.exit();
32
- // }
33
- return keys;
34
- });
35
- }
36
- function mockCacherSet(ctx, key, data) {
37
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
38
- const finalKey = mock_prefix + key;
39
- const item = mockCacherData.find(item => item === finalKey);
40
- if (!item) {
41
- mockCacherData.push(finalKey);
42
- }
43
- yield ctx.broker.cacher.set(key, data);
44
- });
45
- }
46
- // 支持 * 通配符
47
- function mockCacherClean(ctx, key) {
48
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
49
- if (key == "**") {
50
- mockCacherData = [];
51
- }
52
- else {
53
- const regex_key = "^" + key.split(".").join("\\.").split("*").join(".+").split("$").join("\\$") + "$";
54
- const reg = new RegExp(regex_key);
55
- mockCacherData = mockCacherData.filter(item => !reg.test(item));
56
- }
57
- yield ctx.broker.cacher.clean(key);
58
- });
59
- }
60
- function mockCacherDel(ctx, key) {
61
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
62
- const finalKey = mock_prefix + key;
63
- mockCacherData = mockCacherData.filter(item => item !== finalKey);
64
- yield ctx.broker.cacher.del(key);
65
- });
66
- }
12
+ // let mockCacherData: string[] = [];
13
+ // let mock_prefix = "";
14
+ // async function mockCacherGet(ctx: any, key: string): Promise<any> { // cacher.get
15
+ // return await ctx.broker.cacher.get(key);
16
+ // }
17
+ // // 支持 * 通配符
18
+ // async function mockCacherKeys(ctx: any, key: string): Promise<string[]> { // cacher.client.keys
19
+ // // // 原来是:
20
+ // // const broker_res = await ctx.broker.cacher.client.keys(key);
21
+ // const regex_key = "^"+ key.split(".").join("\\.").split("*").join(".+").split("$").join("\\$") + "$";
22
+ // const reg = new RegExp(regex_key);
23
+ // const keys = mockCacherData.filter(item => reg.test(item));
24
+ // // const diff_d = _.difference(broker_res, keys); // 差错 diff 代码
25
+ // // if (diff_d.length > 0) {
26
+ // // console.log("diff is",key, diff_d);
27
+ // // console.log("* is", key,await ctx.broker.cacher.client.keys("*"));
28
+ // // console.log("my is",key, mockCacherData);
29
+ // // process.exit();
30
+ // // }
31
+ // return keys;
32
+ // }
33
+ // async function mockCacherSet(ctx: any, key: string, data: any): Promise<any> {
34
+ // // cacher.set
35
+ // const finalKey = mock_prefix + key;
36
+ // // const item = mockCacherData.find(item => item === finalKey);
37
+ // // if (!item) {
38
+ // // mockCacherData.push(finalKey);
39
+ // // }
40
+ // await ctx.broker.cacher.set(key, data);
41
+ // }
42
+ // // 支持 * 通配符
43
+ // async function mockCacherClean(ctx: any, key: string): Promise<any> {
44
+ // // cacher.clean
45
+ // if (key == "**") {
46
+ // mockCacherData = [];
47
+ // } else {
48
+ // const regex_key =
49
+ // "^" +
50
+ // key
51
+ // .split(".")
52
+ // .join("\\.")
53
+ // .split("*")
54
+ // .join(".+")
55
+ // .split("$")
56
+ // .join("\\$") +
57
+ // "$";
58
+ // const reg = new RegExp(regex_key);
59
+ // mockCacherData = mockCacherData.filter((item) => !reg.test(item));
60
+ // }
61
+ // await ctx.broker.cacher.clean(key);
62
+ // }
63
+ // async function mockCacherDel(ctx: any, key: string): Promise<any> {
64
+ // // cacher.del
65
+ // const finalKey = mock_prefix + key;
66
+ // mockCacherData = mockCacherData.filter((item) => item !== finalKey);
67
+ // await ctx.broker.cacher.del(key);
68
+ // }
67
69
  ////////////////////////////////////////////////
68
70
  function transformMetadata(ctx) {
69
71
  return Object.assign(Object.assign({}, ctx.meta.caller), { metadata: ctx.params.data });
70
72
  }
71
73
  function getKey(key, keyPrefix) {
72
- return key.replace(keyPrefix, '');
74
+ return key.replace(keyPrefix, "");
73
75
  }
74
- function getServiceMetadataCacherKey(serviceName, metadataType, metadataApiName) {
75
- return `${SERVICE_METADATA_PREFIX}.${serviceName}.${metadataType}.${metadataApiName}`;
76
+ function getServiceMetadataCacherKey(nodeID, serviceName, metadataType, metadataApiName) {
77
+ return `$${nodeID}.${SERVICE_METADATA_PREFIX}.${serviceName}.${metadataType}.${metadataApiName}`;
76
78
  }
77
79
  function addServiceMetadata(ctx) {
78
80
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
79
81
  const { nodeID } = ctx.meta.caller || { nodeID: undefined };
82
+ if (!nodeID) {
83
+ console.log(`addServiceMetadata ctx.meta`, ctx.meta);
84
+ }
80
85
  const { metadataType, metadataApiName, metadataServiceName } = ctx.meta || { metadataType: undefined, metadataApiName: undefined, metadataServiceName: undefined };
81
86
  // if(metadataType){
82
87
  // console.log('saveServiceMetadataMap', metadataType, metadataApiName, metadataServiceName )
@@ -84,28 +89,31 @@ function addServiceMetadata(ctx) {
84
89
  if (!metadataServiceName) {
85
90
  return;
86
91
  }
87
- const key = getServiceMetadataCacherKey(metadataServiceName, metadataType, metadataApiName);
88
- let data = yield mockCacherGet(ctx, key); // REPLACE: await ctx.broker.cacher.get(key);
89
- let nodeIds = [];
90
- if (data) {
91
- if (data.nodeIds) {
92
- nodeIds = data.nodeIds;
93
- }
92
+ const key = getServiceMetadataCacherKey(nodeID, metadataServiceName, metadataType, metadataApiName);
93
+ if (false && metadataType === 'objects') {
94
+ console.log(`addServiceMetadata`, key);
94
95
  }
95
- nodeIds.push(nodeID);
96
+ // let data = await ctx.broker.cacher.get(key);// REPLACE: await mockCacherGet(ctx, key);
97
+ // let nodeIds = [];
98
+ // if (data) {
99
+ // if (data.nodeIds) {
100
+ // nodeIds = data.nodeIds;
101
+ // }
102
+ // }
103
+ // nodeIds.push(nodeID);
104
+ yield ctx.broker.cacher.set(key, {
105
+ nodeIds: [nodeID],
106
+ metadataType,
107
+ metadataApiName,
108
+ metadata: ctx.params.data,
109
+ });
96
110
  // REPLACE:
97
- // await ctx.broker.cacher.set(key, {
111
+ // await mockCacherSet(ctx, key, {
98
112
  // nodeIds: nodeIds,
99
113
  // metadataType,
100
114
  // metadataApiName,
101
- // metadata: ctx.params.data
115
+ // metadata: ctx.params.data,
102
116
  // });
103
- yield mockCacherSet(ctx, key, {
104
- nodeIds: nodeIds,
105
- metadataType,
106
- metadataApiName,
107
- metadata: ctx.params.data
108
- });
109
117
  });
110
118
  }
111
119
  // 这里需要更改
@@ -113,54 +121,64 @@ function query(ctx, queryKey) {
113
121
  var _a;
114
122
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
115
123
  const keyPrefix = ((_a = ctx.broker.cacher) === null || _a === void 0 ? void 0 : _a.prefix) || "";
116
- // REPLACE: const keys = await ctx.broker.cacher.client.keys(`${keyPrefix}${queryKey}`) //TODO 此功能仅支持redis cache
117
- const keys = yield mockCacherKeys(ctx, `${keyPrefix}${queryKey}`); //TODO 此功能仅支持redis cache
124
+ const keys = yield ctx.broker.cacher.client.keys(`${keyPrefix}${queryKey}`); //TODO 此功能仅支持redis cache
125
+ // REPLACE: const keys = await mockCacherKeys(ctx, `${keyPrefix}${queryKey}`) //TODO 此功能仅支持redis cache
118
126
  const values = [];
119
127
  for (const key of keys) {
120
- // REPLACE: values.push(await ctx.broker.cacher.get(getKey(key, keyPrefix)))
121
- values.push(yield mockCacherGet(ctx, getKey(key, keyPrefix)));
128
+ values.push(yield ctx.broker.cacher.get(getKey(key, keyPrefix)));
129
+ // REPLACE: values.push(await mockCacherGet(ctx, getKey(key, keyPrefix)));
122
130
  }
123
131
  return values;
124
132
  });
125
133
  }
126
- function getPackageServiceCacherKey(serviceName) {
127
- return `${PACKAGE_SERVICES_KEY}.${serviceName}`;
134
+ function getPackageServiceCacherKey(nodeID, serviceName) {
135
+ return `$${nodeID}.${PACKAGE_SERVICES_KEY}.${serviceName}`;
128
136
  }
129
- function setPackageServices(ctx, packageServicesName) {
130
- var packageServicesName_1, packageServicesName_1_1;
137
+ function setPackageServices(ctx, packageServices) {
138
+ var packageServices_1, packageServices_1_1;
131
139
  var e_1, _a;
132
140
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
133
141
  try {
134
- for (packageServicesName_1 = tslib_1.__asyncValues(packageServicesName); packageServicesName_1_1 = yield packageServicesName_1.next(), !packageServicesName_1_1.done;) {
135
- const packageServiceName = packageServicesName_1_1.value;
136
- // REPLACE: await ctx.broker.cacher.set(getPackageServiceCacherKey(packageServiceName), {service: packageServiceName});
137
- yield mockCacherSet(ctx, getPackageServiceCacherKey(packageServiceName), { service: packageServiceName });
142
+ for (packageServices_1 = tslib_1.__asyncValues(packageServices); packageServices_1_1 = yield packageServices_1.next(), !packageServices_1_1.done;) {
143
+ const packageService = packageServices_1_1.value;
144
+ ctx.broker.cacher.set(getPackageServiceCacherKey(packageService.nodeID, packageService.name), { service: packageService });
138
145
  }
139
146
  }
140
147
  catch (e_1_1) { e_1 = { error: e_1_1 }; }
141
148
  finally {
142
149
  try {
143
- if (packageServicesName_1_1 && !packageServicesName_1_1.done && (_a = packageServicesName_1.return)) yield _a.call(packageServicesName_1);
150
+ if (packageServices_1_1 && !packageServices_1_1.done && (_a = packageServices_1.return)) yield _a.call(packageServices_1);
144
151
  }
145
152
  finally { if (e_1) throw e_1.error; }
146
153
  }
147
154
  });
148
155
  }
149
- function clearPackageServices(ctx, packageServicesName) {
150
- var packageServicesName_2, packageServicesName_2_1;
156
+ function clearPackageServices(ctx, packageServices) {
157
+ var packageServices_2, packageServices_2_1;
151
158
  var e_2, _a;
152
159
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
153
160
  try {
154
- for (packageServicesName_2 = tslib_1.__asyncValues(packageServicesName); packageServicesName_2_1 = yield packageServicesName_2.next(), !packageServicesName_2_1.done;) {
155
- const packageServiceName = packageServicesName_2_1.value;
156
- // REPLACE: await ctx.broker.cacher.del(getPackageServiceCacherKey(packageServiceName));
157
- yield mockCacherDel(ctx, getPackageServiceCacherKey(packageServiceName));
161
+ for (packageServices_2 = tslib_1.__asyncValues(packageServices); packageServices_2_1 = yield packageServices_2.next(), !packageServices_2_1.done;) {
162
+ const packageService = packageServices_2_1.value;
163
+ let nodeID = null;
164
+ let name = null;
165
+ if (_.isString(packageService)) {
166
+ let foo = packageService.split('.');
167
+ nodeID = foo[0];
168
+ name = foo[1];
169
+ }
170
+ else if (_.isObject(packageService)) {
171
+ nodeID = packageService.nodeID;
172
+ name = packageService.nodeID;
173
+ }
174
+ // console.log(`clearPackageServices del ===== `, getPackageServiceCacherKey(nodeID, name))
175
+ yield ctx.broker.cacher.del(getPackageServiceCacherKey(nodeID, name));
158
176
  }
159
177
  }
160
178
  catch (e_2_1) { e_2 = { error: e_2_1 }; }
161
179
  finally {
162
180
  try {
163
- if (packageServicesName_2_1 && !packageServicesName_2_1.done && (_a = packageServicesName_2.return)) yield _a.call(packageServicesName_2);
181
+ if (packageServices_2_1 && !packageServices_2_1.done && (_a = packageServices_2.return)) yield _a.call(packageServices_2);
164
182
  }
165
183
  finally { if (e_2) throw e_2.error; }
166
184
  }
@@ -168,32 +186,42 @@ function clearPackageServices(ctx, packageServicesName) {
168
186
  }
169
187
  function getLastPackageServices(ctx) {
170
188
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
171
- const packageServices = yield query(ctx, getPackageServiceCacherKey("*"));
172
- const servicesName = [];
173
- packageServices.forEach(element => {
189
+ const packageServices = yield query(ctx, getPackageServiceCacherKey("*", "*"));
190
+ const services = [];
191
+ packageServices.forEach((element) => {
174
192
  if (element) {
175
- servicesName.push(element.service);
193
+ services.push(element.service);
176
194
  }
177
195
  });
178
- return servicesName;
196
+ return services;
179
197
  });
180
198
  }
181
199
  function getPackageServices(ctx) {
182
200
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
183
- const servicesName = _.pluck(ctx.broker.registry.getServiceList({ withActions: true }), 'name');
184
- let packageServicesName = _.filter(servicesName, (serviceName) => {
185
- return serviceName.startsWith(PACKAGE_SERVICE_PREFIX);
201
+ const packageServices = [];
202
+ const services = ctx.broker.registry.getServiceList({ withActions: true });
203
+ _.each(services, (serviceItem) => {
204
+ const { name, nodeID } = serviceItem; //, version, fullName, settings, local, available, nodeID
205
+ if (name.startsWith(PACKAGE_SERVICE_PREFIX)) {
206
+ // console.log(`serviceItem`, serviceItem)
207
+ packageServices.push(Object.assign({}, serviceItem, { apiName: `${nodeID}.${name}` }));
208
+ }
186
209
  });
187
- packageServicesName = _.uniq(packageServicesName);
188
- return packageServicesName;
210
+ return packageServices;
211
+ // const servicesName = _.pluck(services, "name");
212
+ // let packageServicesName = _.filter(servicesName, (serviceName) => {
213
+ // return serviceName.startsWith(PACKAGE_SERVICE_PREFIX);
214
+ // });
215
+ // packageServicesName = _.uniq(packageServicesName);
216
+ // return packageServicesName;
189
217
  });
190
218
  }
191
- function clearPackageServiceMetadatas(ctx, packageServiceName) {
219
+ function clearPackageServiceMetadatas(ctx, nodeID, packageServiceName) {
192
220
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
193
- const key = getServiceMetadataCacherKey(packageServiceName, "*", "*");
221
+ const key = getServiceMetadataCacherKey(nodeID, packageServiceName, "*", "*");
194
222
  const clearMetadatas = yield query(ctx, key);
195
- // REPLACE: await ctx.broker.cacher.clean(key);
196
- yield mockCacherClean(ctx, key);
223
+ yield ctx.broker.cacher.clean(key);
224
+ // REPLACE: await mockCacherClean(ctx, key);
197
225
  return clearMetadatas;
198
226
  });
199
227
  }
@@ -204,8 +232,19 @@ function clearPackageServicesMetadatas(ctx, offlinePackageServices) {
204
232
  let clearMetadatas = [];
205
233
  try {
206
234
  for (offlinePackageServices_1 = tslib_1.__asyncValues(offlinePackageServices); offlinePackageServices_1_1 = yield offlinePackageServices_1.next(), !offlinePackageServices_1_1.done;) {
207
- const packageServiceName = offlinePackageServices_1_1.value;
208
- const clearPackageMetadatas = yield clearPackageServiceMetadatas(ctx, packageServiceName);
235
+ const packageService = offlinePackageServices_1_1.value;
236
+ let nodeID = null;
237
+ let name = null;
238
+ if (_.isString(packageService)) {
239
+ let foo = packageService.split('.');
240
+ nodeID = foo[0];
241
+ name = foo[1];
242
+ }
243
+ else if (_.isObject(packageService)) {
244
+ nodeID = packageService.nodeID;
245
+ name = packageService.nodeID;
246
+ }
247
+ const clearPackageMetadatas = yield clearPackageServiceMetadatas(ctx, nodeID, name);
209
248
  clearMetadatas = clearMetadatas.concat(clearPackageMetadatas);
210
249
  }
211
250
  }
@@ -216,8 +255,8 @@ function clearPackageServicesMetadatas(ctx, offlinePackageServices) {
216
255
  }
217
256
  finally { if (e_3) throw e_3.error; }
218
257
  }
219
- _.each(_.groupBy(clearMetadatas, 'metadataType'), function (data, metadataType) {
220
- ctx.broker.emit(`${SERVICE_METADATA_PREFIX}.${metadataType}.clear`, { metadataType, metadataApiNames: _.pluck(data, 'metadataApiName'), isClear: true });
258
+ _.each(_.groupBy(clearMetadatas, "metadataType"), function (data, metadataType) {
259
+ ctx.broker.emit(`${SERVICE_METADATA_PREFIX}.${metadataType}.clear`, { metadataType, metadataApiNames: _.pluck(data, "metadataApiName"), isClear: true });
221
260
  });
222
261
  });
223
262
  }
@@ -226,42 +265,47 @@ function getMetadataServices(broker) {
226
265
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
227
266
  const queryKey = `${METADATA_SERVICES_PERFIX}.*`;
228
267
  const keyPrefix = ((_a = broker.cacher) === null || _a === void 0 ? void 0 : _a.prefix) || "";
229
- // REPLACE: const keys = await broker.cacher.client.keys(`${keyPrefix}${queryKey}`) //TODO 此功能仅支持redis cache
230
- const keys = yield mockCacherKeys({ broker, }, `${keyPrefix}${queryKey}`); //TODO 此功能仅支持redis cache
268
+ const keys = yield broker.cacher.client.keys(`${keyPrefix}${queryKey}`); //TODO 此功能仅支持redis cache
269
+ // REPLACE: const keys = await mockCacherKeys({broker,}, `${keyPrefix}${queryKey}`) //TODO 此功能仅支持redis cache
231
270
  const values = [];
232
271
  for (const key of keys) {
233
- // REPLACE: values.push(await broker.cacher.get(getKey(key, keyPrefix)))
234
- values.push(yield mockCacherGet({ broker }, getKey(key, keyPrefix)));
272
+ values.push(yield broker.cacher.get(getKey(key, keyPrefix)));
273
+ // REPLACE: values.push(await mockCacherGet({ broker }, getKey(key, keyPrefix)));
235
274
  }
236
275
  return values;
237
276
  });
238
277
  }
239
278
  function started(broker) {
240
- var _a;
241
279
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
242
- mock_prefix = ((_a = broker.cacher) === null || _a === void 0 ? void 0 : _a.prefix) || "";
243
- // REPLACE: await broker.cacher.set(`${METADATA_SERVICES_PERFIX}.${broker.nodeID}`, {});
244
- yield mockCacherSet({ broker, }, `${METADATA_SERVICES_PERFIX}.${broker.nodeID}`, {});
280
+ // mock_prefix = broker.cacher?.prefix || "";
281
+ yield broker.cacher.set(`${METADATA_SERVICES_PERFIX}.${broker.nodeID}`, {});
282
+ // REPLACE: await mockCacherSet({broker, }, `${METADATA_SERVICES_PERFIX}.${broker.nodeID}`, {});
245
283
  });
246
284
  }
247
285
  exports.started = started;
248
286
  function stopped(broker) {
249
287
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
250
- // REPLACE: await broker.cacher.del(`${METADATA_SERVICES_PERFIX}.${broker.nodeID}`);
251
- yield mockCacherDel({ broker }, `${METADATA_SERVICES_PERFIX}.${broker.nodeID}`);
288
+ yield broker.cacher.del(`${METADATA_SERVICES_PERFIX}.${broker.nodeID}`);
289
+ // REPLACE: await mockCacherDel({broker}, `${METADATA_SERVICES_PERFIX}.${broker.nodeID}`);
252
290
  const services = yield getMetadataServices(broker);
253
291
  if (!services || services.length === 0) {
254
- // REPLACE: await broker.cacher.clean(`**`);
255
- yield mockCacherClean({ broker }, `**`);
292
+ yield broker.cacher.clean(`**`);
293
+ //REPLACE: await mockCacherClean({broker}, `**`);
256
294
  }
257
295
  });
258
296
  }
259
297
  exports.stopped = stopped;
260
298
  exports.ActionHandlers = {
299
+ clearPackageServices,
300
+ clearPackageServicesMetadatas,
261
301
  get(ctx) {
262
302
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
263
- // REPLACE: return await ctx.broker.cacher.get(ctx.params.key)
264
- return yield mockCacherGet(ctx, ctx.params.key);
303
+ try {
304
+ return yield ctx.broker.cacher.get(ctx.params.key);
305
+ }
306
+ catch (error) {
307
+ }
308
+ // REPLACE: return await mockCacherGet(ctx, ctx.params.key)
265
309
  });
266
310
  },
267
311
  filter(ctx) {
@@ -278,8 +322,8 @@ exports.ActionHandlers = {
278
322
  },
279
323
  add(ctx) {
280
324
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
281
- // REPLACE: return await ctx.broker.cacher.set(ctx.params.key, transformMetadata(ctx));
282
- return yield mockCacherSet(ctx, ctx.params.key, transformMetadata(ctx));
325
+ return yield ctx.broker.cacher.set(ctx.params.key, transformMetadata(ctx));
326
+ // REPLACE: return await mockCacherSet(ctx, ctx.params.key, transformMetadata(ctx));
283
327
  });
284
328
  },
285
329
  addServiceMetadata(ctx) {
@@ -287,11 +331,22 @@ exports.ActionHandlers = {
287
331
  return yield addServiceMetadata(ctx);
288
332
  });
289
333
  },
334
+ fuzzyDelete(ctx) {
335
+ var _a;
336
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
337
+ const { key } = ctx.params;
338
+ const keyPrefix = ((_a = ctx.broker.cacher) === null || _a === void 0 ? void 0 : _a.prefix) || "";
339
+ const keys = yield ctx.broker.cacher.client.keys(`${keyPrefix}${key}`);
340
+ for (const _key of keys) {
341
+ yield ctx.broker.cacher.del(getKey(_key, keyPrefix));
342
+ }
343
+ });
344
+ },
290
345
  delete(ctx) {
291
346
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
292
347
  try {
293
- // REPLACE: await ctx.broker.cacher.del(ctx.params.key);
294
- yield mockCacherDel(ctx, ctx.params.key);
348
+ yield ctx.broker.cacher.del(ctx.params.key);
349
+ // REPLACE: await mockCacherDel(ctx, ctx.params.key);
295
350
  }
296
351
  catch (error) {
297
352
  ctx.broker.logger.info(error.message);
@@ -301,47 +356,72 @@ exports.ActionHandlers = {
301
356
  },
302
357
  getServiceMetadatas(ctx) {
303
358
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
304
- let { serviceName, metadataType, metadataApiName } = ctx.params;
359
+ let { nodeID, serviceName, metadataType, metadataApiName } = ctx.params;
360
+ if (!nodeID) {
361
+ nodeID = "*";
362
+ }
305
363
  if (!serviceName) {
306
- serviceName = '*';
364
+ serviceName = "*";
307
365
  }
308
366
  if (!metadataType) {
309
- metadataType = '*';
367
+ metadataType = "*";
310
368
  }
311
369
  if (!metadataApiName) {
312
- metadataApiName = '*';
370
+ metadataApiName = "*";
313
371
  }
314
- const key = getServiceMetadataCacherKey(serviceName, metadataType, metadataApiName);
372
+ const key = getServiceMetadataCacherKey(nodeID, serviceName, metadataType, metadataApiName);
315
373
  return yield query(ctx, key);
316
374
  });
317
375
  },
318
376
  getServiceMetadata(ctx) {
319
377
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
320
378
  let { serviceName, metadataType, metadataApiName } = ctx.params;
321
- const key = getServiceMetadataCacherKey(serviceName, metadataType, metadataApiName);
322
- // REPLACE: return await ctx.broker.cacher.get(key)
323
- return yield mockCacherGet(ctx, key);
379
+ const { nodeID } = ctx.meta.caller || { nodeID: undefined };
380
+ if (!nodeID) {
381
+ console.log(`getServiceMetadata ctx.meta`, ctx.meta);
382
+ }
383
+ const key = getServiceMetadataCacherKey(nodeID, serviceName, metadataType, metadataApiName);
384
+ return yield ctx.broker.cacher.get(key);
385
+ // REPLACE: return await mockCacherGet(ctx, key);
324
386
  });
325
387
  },
326
388
  refreshServiceMetadatas(ctx) {
327
389
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
328
390
  const { offlinePackageServices: _offlinePackageServices } = ctx.params || { offlinePackageServices: undefined };
329
391
  if (_offlinePackageServices && _offlinePackageServices.length > 0) {
330
- yield clearPackageServices(ctx, _offlinePackageServices);
392
+ // await clearPackageServices(ctx, _offlinePackageServices);
393
+ ctx.broker.broadcast(`$metadata.clearPackageServices`, { offlinePackageServicesName: _offlinePackageServices });
331
394
  }
332
395
  let packageServices = yield getPackageServices(ctx);
396
+ const packageServicesName = _.pluck(packageServices, "apiName");
333
397
  const lastPackageServices = yield getLastPackageServices(ctx);
334
- let offlinePackageServices = _.difference(lastPackageServices, packageServices);
398
+ const lastPackageServicesNames = _.pluck(lastPackageServices, "apiName");
399
+ let offlinePackageServicesName = _.difference(lastPackageServicesNames, packageServicesName);
335
400
  if (_offlinePackageServices && _offlinePackageServices.length > 0) {
336
- offlinePackageServices = offlinePackageServices.concat(_offlinePackageServices);
337
- packageServices = _.difference(lastPackageServices, _offlinePackageServices);
401
+ offlinePackageServicesName = offlinePackageServicesName.concat(_offlinePackageServices);
402
+ const onlinePackageServicesName = _.difference(lastPackageServices, _offlinePackageServices);
403
+ packageServices = _.filter(packageServices, (ps) => {
404
+ return ps && _.include(onlinePackageServicesName, ps.apiName);
405
+ });
406
+ }
407
+ if (offlinePackageServicesName.length > 0) {
408
+ // console.log(`lastPackageServicesNames`, lastPackageServicesNames)
409
+ // console.log(`packageServicesName`, packageServicesName)
410
+ // console.log(`offlinePackageServicesName`, offlinePackageServicesName);
411
+ ctx.broker.broadcast(`$metadata.clearPackageServices`, { offlinePackageServicesName });
338
412
  }
339
- if (offlinePackageServices.length > 0) {
340
- yield clearPackageServices(ctx, offlinePackageServices);
341
- yield clearPackageServicesMetadatas(ctx, offlinePackageServices);
413
+ //使用延时方式存储软件包记录, 防止多服务之间服务发现延时导致数据清理异常。延时来自moleculer内部的服务发现机制(broker.registry.getServiceList)
414
+ //清理数据无需做到实时,延时30秒
415
+ if (savePackageServicesTimeoutID) {
416
+ clearTimeout(savePackageServicesTimeoutID);
417
+ savePackageServicesTimeoutID = null;
418
+ }
419
+ if (!savePackageServicesTimeoutID) {
420
+ savePackageServicesTimeoutID = setTimeout(() => {
421
+ setPackageServices(ctx, packageServices);
422
+ }, 30 * 1000);
342
423
  }
343
- yield setPackageServices(ctx, packageServices);
344
424
  });
345
- }
425
+ },
346
426
  };
347
427
  //# sourceMappingURL=actionsHandler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"actionsHandler.js","sourceRoot":"","sources":["../src/actionsHandler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"actionsHandler.js","sourceRoot":"","sources":["../src/actionsHandler.ts"],"names":[],"mappings":"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"}
@@ -24,11 +24,22 @@ module.exports = {
24
24
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
25
25
  return yield actionsHandler_1.ActionHandlers.refreshServiceMetadatas(ctx);
26
26
  });
27
+ },
28
+ clearPackageServices: function (ctx) {
29
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
30
+ const { offlinePackageServicesName } = ctx.params;
31
+ // console.log(`$metadata.clearPackageServices`, offlinePackageServicesName)
32
+ yield actionsHandler_1.ActionHandlers.clearPackageServices(ctx, offlinePackageServicesName);
33
+ yield actionsHandler_1.ActionHandlers.clearPackageServicesMetadatas(ctx, offlinePackageServicesName);
34
+ });
27
35
  }
28
36
  },
29
37
  events: {
30
38
  "$services.changed"(ctx) {
31
39
  this.refreshServiceMetadatas(ctx);
40
+ },
41
+ "$metadata.clearPackageServices"(ctx) {
42
+ this.clearPackageServices(ctx);
32
43
  }
33
44
  },
34
45
  /**
@@ -70,6 +81,13 @@ module.exports = {
70
81
  });
71
82
  }
72
83
  },
84
+ fuzzyDelete: {
85
+ handler(ctx) {
86
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
87
+ return yield actionsHandler_1.ActionHandlers.fuzzyDelete(ctx);
88
+ });
89
+ }
90
+ },
73
91
  refreshServiceMetadatas: {
74
92
  params: {
75
93
  offlinePackageServices: { type: "array", items: "string" },
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.service.js","sourceRoot":"","sources":["../src/metadata.service.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,YAAY,CAAC;;;AACb,qDAAoE;AAEpE,MAAM,YAAY,GAAG,UAAU,CAAC;AAChC,MAAM,CAAC,OAAO,GAAG;IAChB,IAAI,EAAE,YAAY;IAClB,SAAS,EAAE,SAAS;IACpB;;OAEG;IACH,QAAQ,EAAE,EAET;IACK,OAAO;;YACZ,MAAM,wBAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC3B,CAAC;KAAA;IACD;;SAEK;IACL,OAAO,EAAE;QACR,uBAAuB,EAAC,UAAgB,GAAG;;gBAC1C,OAAO,MAAM,+BAAc,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAA;YACzD,CAAC;SAAA;KACD;IAED,MAAM,EAAE;QACP,mBAAmB,CAAC,GAAG;YACtB,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC;KACD;IACD;;SAEK;IACL,OAAO,EAAE;QACR,GAAG,EAAE;YACE,OAAO,CAAC,GAAG;;oBAChB,OAAO,MAAM,+BAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACtC,CAAC;aAAA;SACD;QACD,MAAM,EAAE;YACD,OAAO,CAAC,GAAG;;oBAChB,OAAO,MAAM,+BAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACzC,CAAC;aAAA;SACD;QACD,GAAG,EAAE;YACE,OAAO,CAAC,GAAG;;oBAChB,OAAO,MAAM,+BAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACtC,CAAC;aAAA;SACD;QACD,kBAAkB,EAAE;YACb,OAAO,CAAC,GAAG;;oBAChB,OAAO,MAAM,+BAAc,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;gBACrD,CAAC;aAAA;SACD;QACD,MAAM,EAAE;YACD,OAAO,CAAC,GAAG;;oBAChB,OAAO,MAAM,+BAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACzC,CAAC;aAAA;SACD;QACD,uBAAuB,EAAE;YACxB,MAAM,EAAE;gBACK,sBAAsB,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE;aAC7D;YACJ,OAAO,CAAC,GAAG;;oBAChB,OAAO,MAAM,+BAAc,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;gBAC1D,CAAC;aAAA;SACD;QACD,mBAAmB,EAAE;YACd,OAAO,CAAC,GAAG;;oBAChB,OAAO,MAAM,+BAAc,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;gBACtD,CAAC;aAAA;SACD;QACD,kBAAkB,EAAE;YACnB,MAAM,EAAE;gBACP,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAC;gBAC9B,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAC;gBAC/B,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAC;aAClC;YACK,OAAO,CAAC,GAAG;;oBAChB,OAAO,MAAM,+BAAc,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;gBACrD,CAAC;aAAA;SACD;KACD;IACD;;OAEG;IACG,OAAO;;YACZ,MAAM,wBAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC3B,CAAC;KAAA;CACD,CAAA"}
1
+ {"version":3,"file":"metadata.service.js","sourceRoot":"","sources":["../src/metadata.service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steedos/service-metadata",
3
- "version": "2.1.49",
3
+ "version": "2.1.53",
4
4
  "description": "",
5
5
  "main": "lib/metadata.service.js",
6
6
  "scripts": {
@@ -40,5 +40,5 @@
40
40
  "publishConfig": {
41
41
  "access": "public"
42
42
  },
43
- "gitHead": "ad2d122d80c82c1419640d7cfde580024ff6b444"
43
+ "gitHead": "5001ce7ac23abc5d0722c3ba97b0c3c8a963d368"
44
44
  }
@@ -4,218 +4,275 @@ const PACKAGE_SERVICE_PREFIX = '~packages-';
4
4
  const METADATA_SERVICES_PERFIX = '$METADATA-SERVICES';
5
5
  import * as _ from 'underscore';
6
6
 
7
+ let savePackageServicesTimeoutID = null;
8
+
7
9
  //////////////// mock for redis cacher ////////////////
8
- let mockCacherData: string[] = [];
9
- let mock_prefix = "";
10
+ // let mockCacherData: string[] = [];
11
+ // let mock_prefix = "";
10
12
 
11
- async function mockCacherGet(ctx: any, key: string): Promise<any> { // cacher.get
12
- return await ctx.broker.cacher.get(key);
13
- }
13
+ // async function mockCacherGet(ctx: any, key: string): Promise<any> { // cacher.get
14
+ // return await ctx.broker.cacher.get(key);
15
+ // }
14
16
 
15
- // 支持 * 通配符
16
- async function mockCacherKeys(ctx: any, key: string): Promise<string[]> { // cacher.client.keys
17
- // // 原来是:
18
- // const broker_res = await ctx.broker.cacher.client.keys(key);
17
+ // // 支持 * 通配符
18
+ // async function mockCacherKeys(ctx: any, key: string): Promise<string[]> { // cacher.client.keys
19
+ // // // 原来是:
20
+ // // const broker_res = await ctx.broker.cacher.client.keys(key);
19
21
 
20
- const regex_key = "^"+ key.split(".").join("\\.").split("*").join(".+").split("$").join("\\$") + "$";
21
- const reg = new RegExp(regex_key);
22
- const keys = mockCacherData.filter(item => reg.test(item));
22
+ // const regex_key = "^"+ key.split(".").join("\\.").split("*").join(".+").split("$").join("\\$") + "$";
23
+ // const reg = new RegExp(regex_key);
24
+ // const keys = mockCacherData.filter(item => reg.test(item));
23
25
 
24
- // const diff_d = _.difference(broker_res, keys); // 差错 diff 代码
25
- // if (diff_d.length > 0) {
26
- // console.log("diff is",key, diff_d);
27
- // console.log("* is", key,await ctx.broker.cacher.client.keys("*"));
28
- // console.log("my is",key, mockCacherData);
29
- // process.exit();
30
- // }
26
+ // // const diff_d = _.difference(broker_res, keys); // 差错 diff 代码
27
+ // // if (diff_d.length > 0) {
28
+ // // console.log("diff is",key, diff_d);
29
+ // // console.log("* is", key,await ctx.broker.cacher.client.keys("*"));
30
+ // // console.log("my is",key, mockCacherData);
31
+ // // process.exit();
32
+ // // }
31
33
 
32
- return keys;
33
- }
34
+ // return keys;
35
+ // }
34
36
 
35
- async function mockCacherSet(ctx: any, key: string, data: any): Promise<any> { // cacher.set
36
- const finalKey = mock_prefix + key;
37
- const item = mockCacherData.find(item => item === finalKey);
38
- if (!item) {
39
- mockCacherData.push(finalKey);
40
- }
37
+ // async function mockCacherSet(ctx: any, key: string, data: any): Promise<any> {
38
+ // // cacher.set
39
+ // const finalKey = mock_prefix + key;
40
+ // // const item = mockCacherData.find(item => item === finalKey);
41
+ // // if (!item) {
42
+ // // mockCacherData.push(finalKey);
43
+ // // }
41
44
 
42
- await ctx.broker.cacher.set(key, data);
45
+ // await ctx.broker.cacher.set(key, data);
46
+ // }
43
47
 
44
- }
48
+ // // 支持 * 通配符
49
+ // async function mockCacherClean(ctx: any, key: string): Promise<any> {
50
+ // // cacher.clean
51
+ // if (key == "**") {
52
+ // mockCacherData = [];
53
+ // } else {
54
+ // const regex_key =
55
+ // "^" +
56
+ // key
57
+ // .split(".")
58
+ // .join("\\.")
59
+ // .split("*")
60
+ // .join(".+")
61
+ // .split("$")
62
+ // .join("\\$") +
63
+ // "$";
64
+ // const reg = new RegExp(regex_key);
65
+ // mockCacherData = mockCacherData.filter((item) => !reg.test(item));
66
+ // }
45
67
 
46
- // 支持 * 通配符
47
- async function mockCacherClean(ctx: any, key: string): Promise<any> { // cacher.clean
48
- if (key == "**") {
49
- mockCacherData = []
50
- } else {
51
- const regex_key = "^"+ key.split(".").join("\\.").split("*").join(".+").split("$").join("\\$") + "$";
52
- const reg = new RegExp(regex_key);
53
- mockCacherData = mockCacherData.filter(item => !reg.test(item));
54
- }
55
-
56
- await ctx.broker.cacher.clean(key);
57
- }
58
- async function mockCacherDel(ctx: any, key: string): Promise<any> { // cacher.del
59
- const finalKey = mock_prefix + key;
60
- mockCacherData = mockCacherData.filter(item => item !== finalKey);
61
-
62
- await ctx.broker.cacher.del(key);
63
- }
68
+ // await ctx.broker.cacher.clean(key);
69
+ // }
70
+ // async function mockCacherDel(ctx: any, key: string): Promise<any> {
71
+ // // cacher.del
72
+ // const finalKey = mock_prefix + key;
73
+ // mockCacherData = mockCacherData.filter((item) => item !== finalKey);
64
74
 
75
+ // await ctx.broker.cacher.del(key);
76
+ // }
65
77
 
66
78
  ////////////////////////////////////////////////
67
79
 
68
- function transformMetadata(ctx){
69
- return {
80
+ function transformMetadata(ctx) {
81
+ return {
70
82
  ...ctx.meta.caller,
71
- metadata: ctx.params.data
72
- }
83
+ metadata: ctx.params.data,
84
+ };
73
85
  }
74
86
 
75
- function getKey(key , keyPrefix){
76
- return key.replace(keyPrefix, '');
87
+ function getKey(key, keyPrefix) {
88
+ return key.replace(keyPrefix, "");
77
89
  }
78
90
 
79
- function getServiceMetadataCacherKey(serviceName: string, metadataType: string, metadataApiName: string){
80
- return `${SERVICE_METADATA_PREFIX}.${serviceName}.${metadataType}.${metadataApiName}`;
91
+ function getServiceMetadataCacherKey(nodeID: string, serviceName: string, metadataType: string, metadataApiName: string) {
92
+ return `$${nodeID}.${SERVICE_METADATA_PREFIX}.${serviceName}.${metadataType}.${metadataApiName}`;
81
93
  }
82
94
 
83
- async function addServiceMetadata(ctx){
84
- const { nodeID } = ctx.meta.caller || {nodeID: undefined}
85
- const { metadataType, metadataApiName, metadataServiceName } = ctx.meta || {metadataType: undefined, metadataApiName: undefined, metadataServiceName: undefined}
95
+ async function addServiceMetadata(ctx) {
96
+ const { nodeID } = ctx.meta.caller || { nodeID: undefined };
97
+ if(!nodeID){
98
+ console.log(`addServiceMetadata ctx.meta`, ctx.meta);
99
+ }
100
+
101
+ const { metadataType, metadataApiName, metadataServiceName } = ctx.meta || { metadataType: undefined, metadataApiName: undefined, metadataServiceName: undefined };
86
102
  // if(metadataType){
87
103
  // console.log('saveServiceMetadataMap', metadataType, metadataApiName, metadataServiceName )
88
104
  // }
89
- if(!metadataServiceName){
105
+ if (!metadataServiceName) {
90
106
  return;
91
107
  }
92
- const key = getServiceMetadataCacherKey(metadataServiceName, metadataType, metadataApiName)
93
- let data = await mockCacherGet(ctx, key); // REPLACE: await ctx.broker.cacher.get(key);
94
- let nodeIds = [];
95
- if(data){
96
- if(data.nodeIds){
97
- nodeIds = data.nodeIds
98
- }
108
+ const key = getServiceMetadataCacherKey(nodeID, metadataServiceName, metadataType, metadataApiName);
109
+ if (false && metadataType === 'objects') {
110
+ console.log(`addServiceMetadata`, key);
99
111
  }
100
- nodeIds.push(nodeID);
101
- // REPLACE:
102
- // await ctx.broker.cacher.set(key, {
112
+ // let data = await ctx.broker.cacher.get(key);// REPLACE: await mockCacherGet(ctx, key);
113
+ // let nodeIds = [];
114
+ // if (data) {
115
+ // if (data.nodeIds) {
116
+ // nodeIds = data.nodeIds;
117
+ // }
118
+ // }
119
+ // nodeIds.push(nodeID);
120
+
121
+ await ctx.broker.cacher.set(key, {
122
+ nodeIds: [nodeID],
123
+ metadataType,
124
+ metadataApiName,
125
+ metadata: ctx.params.data,
126
+ });
127
+ // REPLACE:
128
+ // await mockCacherSet(ctx, key, {
103
129
  // nodeIds: nodeIds,
104
130
  // metadataType,
105
131
  // metadataApiName,
106
- // metadata: ctx.params.data
132
+ // metadata: ctx.params.data,
107
133
  // });
108
- await mockCacherSet(ctx, key, {
109
- nodeIds: nodeIds,
110
- metadataType,
111
- metadataApiName,
112
- metadata: ctx.params.data
113
- });
114
134
  }
115
135
 
116
136
  // 这里需要更改
117
- async function query(ctx, queryKey){
137
+ async function query(ctx, queryKey) {
118
138
  const keyPrefix = ctx.broker.cacher?.prefix || "";
119
- // REPLACE: const keys = await ctx.broker.cacher.client.keys(`${keyPrefix}${queryKey}`) //TODO 此功能仅支持redis cache
120
- const keys = await mockCacherKeys(ctx, `${keyPrefix}${queryKey}`) //TODO 此功能仅支持redis cache
139
+ const keys = await ctx.broker.cacher.client.keys(`${keyPrefix}${queryKey}`); //TODO 此功能仅支持redis cache
140
+ // REPLACE: const keys = await mockCacherKeys(ctx, `${keyPrefix}${queryKey}`) //TODO 此功能仅支持redis cache
121
141
  const values = [];
122
142
  for (const key of keys) {
123
- // REPLACE: values.push(await ctx.broker.cacher.get(getKey(key, keyPrefix)))
124
- values.push(await mockCacherGet(ctx, getKey(key, keyPrefix)));
143
+ values.push(await ctx.broker.cacher.get(getKey(key, keyPrefix)));
144
+ // REPLACE: values.push(await mockCacherGet(ctx, getKey(key, keyPrefix)));
125
145
  }
126
146
  return values;
127
147
  }
128
148
 
129
- function getPackageServiceCacherKey(serviceName){
130
- return `${PACKAGE_SERVICES_KEY}.${serviceName}`;
149
+ function getPackageServiceCacherKey(nodeID, serviceName) {
150
+ return `$${nodeID}.${PACKAGE_SERVICES_KEY}.${serviceName}`;
131
151
  }
132
152
 
133
- async function setPackageServices(ctx, packageServicesName){
134
- for await (const packageServiceName of packageServicesName) {
135
- // REPLACE: await ctx.broker.cacher.set(getPackageServiceCacherKey(packageServiceName), {service: packageServiceName});
136
- await mockCacherSet(ctx, getPackageServiceCacherKey(packageServiceName), {service: packageServiceName});
153
+ async function setPackageServices(ctx, packageServices) {
154
+ for await (const packageService of packageServices) {
155
+ ctx.broker.cacher.set(getPackageServiceCacherKey(packageService.nodeID, packageService.name), { service: packageService });
156
+ // REPLACE: await await mockCacherSet(ctx, getPackageServiceCacherKey(packageServiceName), { service: packageServiceName });
137
157
  }
138
158
  }
139
159
 
140
- async function clearPackageServices(ctx, packageServicesName){
141
- for await (const packageServiceName of packageServicesName) {
142
- // REPLACE: await ctx.broker.cacher.del(getPackageServiceCacherKey(packageServiceName));
143
- await mockCacherDel(ctx, getPackageServiceCacherKey(packageServiceName));
160
+ async function clearPackageServices(ctx, packageServices) {
161
+ for await (const packageService of packageServices) {
162
+ let nodeID = null;
163
+ let name = null;
164
+ if(_.isString(packageService)){
165
+ let foo = packageService.split('.');
166
+ nodeID = foo[0];
167
+ name = foo[1];
168
+ }else if(_.isObject(packageService)){
169
+ nodeID = packageService.nodeID;
170
+ name = packageService.nodeID;
171
+ }
172
+ // console.log(`clearPackageServices del ===== `, getPackageServiceCacherKey(nodeID, name))
173
+ await ctx.broker.cacher.del(getPackageServiceCacherKey(nodeID, name));
174
+ // REPLACE: await mockCacherDel(ctx, getPackageServiceCacherKey(packageServiceName));
144
175
  }
145
176
  }
146
177
 
147
- async function getLastPackageServices(ctx){
148
- const packageServices = await query(ctx, getPackageServiceCacherKey("*"));
149
- const servicesName = [];
150
- packageServices.forEach(element => {
151
- if(element){
152
- servicesName.push(element.service)
178
+ async function getLastPackageServices(ctx) {
179
+ const packageServices = await query(ctx, getPackageServiceCacherKey("*", "*"));
180
+ const services = [];
181
+ packageServices.forEach((element) => {
182
+ if (element) {
183
+ services.push(element.service);
153
184
  }
154
185
  });
155
- return servicesName;
186
+ return services;
156
187
  }
157
188
 
158
- async function getPackageServices(ctx){
159
- const servicesName = _.pluck(ctx.broker.registry.getServiceList({ withActions: true }), 'name');
160
- let packageServicesName = _.filter(servicesName, (serviceName)=>{
161
- return serviceName.startsWith(PACKAGE_SERVICE_PREFIX);
189
+ async function getPackageServices(ctx) {
190
+ const packageServices = [];
191
+ const services = ctx.broker.registry.getServiceList({ withActions: true });
192
+ _.each(services, (serviceItem)=>{
193
+ const { name, nodeID } = serviceItem; //, version, fullName, settings, local, available, nodeID
194
+ if(name.startsWith(PACKAGE_SERVICE_PREFIX)){
195
+ // console.log(`serviceItem`, serviceItem)
196
+ packageServices.push(Object.assign({}, serviceItem, {apiName: `${nodeID}.${name}`}))
197
+ }
162
198
  })
163
- packageServicesName = _.uniq(packageServicesName);
164
- return packageServicesName;
199
+ return packageServices;
200
+ // const servicesName = _.pluck(services, "name");
201
+ // let packageServicesName = _.filter(servicesName, (serviceName) => {
202
+ // return serviceName.startsWith(PACKAGE_SERVICE_PREFIX);
203
+ // });
204
+ // packageServicesName = _.uniq(packageServicesName);
205
+ // return packageServicesName;
165
206
  }
166
207
 
167
- async function clearPackageServiceMetadatas(ctx, packageServiceName){
168
- const key = getServiceMetadataCacherKey(packageServiceName, "*", "*");
208
+ async function clearPackageServiceMetadatas(ctx, nodeID, packageServiceName) {
209
+ const key = getServiceMetadataCacherKey(nodeID, packageServiceName, "*", "*");
169
210
  const clearMetadatas = await query(ctx, key);
170
- // REPLACE: await ctx.broker.cacher.clean(key);
171
- await mockCacherClean(ctx, key);
211
+ await ctx.broker.cacher.clean(key);
212
+ // REPLACE: await mockCacherClean(ctx, key);
172
213
  return clearMetadatas;
173
214
  }
174
215
 
175
- async function clearPackageServicesMetadatas(ctx, offlinePackageServices){
216
+ async function clearPackageServicesMetadatas(ctx, offlinePackageServices) {
176
217
  let clearMetadatas = [];
177
- for await (const packageServiceName of offlinePackageServices) {
178
- const clearPackageMetadatas = await clearPackageServiceMetadatas(ctx, packageServiceName)
218
+ for await (const packageService of offlinePackageServices) {
219
+ let nodeID = null;
220
+ let name = null;
221
+ if(_.isString(packageService)){
222
+ let foo = packageService.split('.');
223
+ nodeID = foo[0];
224
+ name = foo[1];
225
+ }else if(_.isObject(packageService)){
226
+ nodeID = packageService.nodeID;
227
+ name = packageService.nodeID;
228
+ }
229
+ const clearPackageMetadatas = await clearPackageServiceMetadatas(ctx, nodeID, name);
179
230
  clearMetadatas = clearMetadatas.concat(clearPackageMetadatas);
180
231
  }
181
- _.each(_.groupBy(clearMetadatas, 'metadataType'), function( data: any , metadataType){
182
- ctx.broker.emit(`${SERVICE_METADATA_PREFIX}.${metadataType}.clear`, {metadataType, metadataApiNames: _.pluck(data, 'metadataApiName'), isClear: true})
183
- })
232
+ _.each(_.groupBy(clearMetadatas, "metadataType"), function(data: any, metadataType) {
233
+ ctx.broker.emit(`${SERVICE_METADATA_PREFIX}.${metadataType}.clear`, { metadataType, metadataApiNames: _.pluck(data, "metadataApiName"), isClear: true });
234
+ });
184
235
  }
185
236
 
186
- async function getMetadataServices(broker){
187
- const queryKey = `${METADATA_SERVICES_PERFIX}.*`
237
+ async function getMetadataServices(broker) {
238
+ const queryKey = `${METADATA_SERVICES_PERFIX}.*`;
188
239
  const keyPrefix = broker.cacher?.prefix || "";
189
- // REPLACE: const keys = await broker.cacher.client.keys(`${keyPrefix}${queryKey}`) //TODO 此功能仅支持redis cache
190
- const keys = await mockCacherKeys({broker,}, `${keyPrefix}${queryKey}`) //TODO 此功能仅支持redis cache
240
+ const keys = await broker.cacher.client.keys(`${keyPrefix}${queryKey}`); //TODO 此功能仅支持redis cache
241
+ // REPLACE: const keys = await mockCacherKeys({broker,}, `${keyPrefix}${queryKey}`) //TODO 此功能仅支持redis cache
191
242
  const values = [];
192
243
  for (const key of keys) {
193
- // REPLACE: values.push(await broker.cacher.get(getKey(key, keyPrefix)))
194
- values.push(await mockCacherGet({broker}, getKey(key, keyPrefix)))
244
+ values.push(await broker.cacher.get(getKey(key, keyPrefix)));
245
+ // REPLACE: values.push(await mockCacherGet({ broker }, getKey(key, keyPrefix)));
195
246
  }
196
247
  return values;
197
248
  }
198
249
 
199
- export async function started(broker){
200
- mock_prefix = broker.cacher?.prefix || "";
201
- // REPLACE: await broker.cacher.set(`${METADATA_SERVICES_PERFIX}.${broker.nodeID}`, {});
202
- await mockCacherSet({broker, }, `${METADATA_SERVICES_PERFIX}.${broker.nodeID}`, {});
250
+ export async function started(broker) {
251
+ // mock_prefix = broker.cacher?.prefix || "";
252
+ await broker.cacher.set(`${METADATA_SERVICES_PERFIX}.${broker.nodeID}`, {});
253
+ // REPLACE: await mockCacherSet({broker, }, `${METADATA_SERVICES_PERFIX}.${broker.nodeID}`, {});
203
254
  }
204
255
 
205
- export async function stopped(broker){
206
- // REPLACE: await broker.cacher.del(`${METADATA_SERVICES_PERFIX}.${broker.nodeID}`);
207
- await mockCacherDel({broker}, `${METADATA_SERVICES_PERFIX}.${broker.nodeID}`);
256
+ export async function stopped(broker) {
257
+ await broker.cacher.del(`${METADATA_SERVICES_PERFIX}.${broker.nodeID}`);
258
+ // REPLACE: await mockCacherDel({broker}, `${METADATA_SERVICES_PERFIX}.${broker.nodeID}`);
208
259
  const services = await getMetadataServices(broker);
209
- if(!services || services.length === 0){
210
- // REPLACE: await broker.cacher.clean(`**`);
211
- await mockCacherClean({broker}, `**`);
260
+ if (!services || services.length === 0) {
261
+ await broker.cacher.clean(`**`);
262
+ //REPLACE: await mockCacherClean({broker}, `**`);
212
263
  }
213
264
  }
214
265
 
215
266
  export const ActionHandlers = {
216
- async get(ctx: any): Promise<any>{
217
- // REPLACE: return await ctx.broker.cacher.get(ctx.params.key)
218
- return await mockCacherGet(ctx, ctx.params.key)
267
+ clearPackageServices,
268
+ clearPackageServicesMetadatas,
269
+ async get(ctx: any): Promise<any> {
270
+ try {
271
+ return await ctx.broker.cacher.get(ctx.params.key);
272
+ } catch (error) {
273
+
274
+ }
275
+ // REPLACE: return await mockCacherGet(ctx, ctx.params.key)
219
276
  },
220
277
  async filter(ctx: any): Promise<Array<any>> {
221
278
  return await query(ctx, ctx.params.key);
@@ -227,58 +284,93 @@ export const ActionHandlers = {
227
284
  // }
228
285
  // return values;
229
286
  },
230
- async add(ctx: any){
231
- // REPLACE: return await ctx.broker.cacher.set(ctx.params.key, transformMetadata(ctx));
232
- return await mockCacherSet(ctx, ctx.params.key, transformMetadata(ctx));
287
+ async add(ctx: any) {
288
+ return await ctx.broker.cacher.set(ctx.params.key, transformMetadata(ctx));
289
+ // REPLACE: return await mockCacherSet(ctx, ctx.params.key, transformMetadata(ctx));
290
+ },
291
+ async addServiceMetadata(ctx: any) {
292
+ return await addServiceMetadata(ctx);
233
293
  },
234
- async addServiceMetadata(ctx: any){
235
- return await addServiceMetadata(ctx);
294
+ async fuzzyDelete(ctx: any){
295
+ const { key } = ctx.params
296
+ const keyPrefix = ctx.broker.cacher?.prefix || "";
297
+ const keys = await ctx.broker.cacher.client.keys(`${keyPrefix}${key}`);
298
+ for (const _key of keys) {
299
+ await ctx.broker.cacher.del(getKey(_key, keyPrefix));
300
+ }
236
301
  },
237
- async delete(ctx: any){
302
+ async delete(ctx: any) {
238
303
  try {
239
- // REPLACE: await ctx.broker.cacher.del(ctx.params.key);
240
- await mockCacherDel(ctx, ctx.params.key);
304
+ await ctx.broker.cacher.del(ctx.params.key);
305
+ // REPLACE: await mockCacherDel(ctx, ctx.params.key);
241
306
  } catch (error) {
242
- ctx.broker.logger.info(error.message)
307
+ ctx.broker.logger.info(error.message);
243
308
  }
244
309
  return true;
245
310
  },
246
- async getServiceMetadatas(ctx: any){
247
- let { serviceName, metadataType, metadataApiName } = ctx.params;
248
- if(!serviceName){
249
- serviceName = '*';
311
+ async getServiceMetadatas(ctx: any) {
312
+ let { nodeID, serviceName, metadataType, metadataApiName } = ctx.params;
313
+ if (!nodeID) {
314
+ nodeID = "*";
250
315
  }
251
- if(!metadataType){
252
- metadataType = '*';
316
+ if (!serviceName) {
317
+ serviceName = "*";
253
318
  }
254
- if(!metadataApiName){
255
- metadataApiName = '*';
319
+ if (!metadataType) {
320
+ metadataType = "*";
256
321
  }
257
- const key = getServiceMetadataCacherKey(serviceName, metadataType, metadataApiName)
322
+ if (!metadataApiName) {
323
+ metadataApiName = "*";
324
+ }
325
+ const key = getServiceMetadataCacherKey(nodeID, serviceName, metadataType, metadataApiName);
258
326
  return await query(ctx, key);
259
327
  },
260
- async getServiceMetadata(ctx: any){
328
+ async getServiceMetadata(ctx: any) {
261
329
  let { serviceName, metadataType, metadataApiName } = ctx.params;
262
- const key = getServiceMetadataCacherKey(serviceName, metadataType, metadataApiName)
263
- // REPLACE: return await ctx.broker.cacher.get(key)
264
- return await mockCacherGet(ctx, key);
330
+ const { nodeID } = ctx.meta.caller || { nodeID: undefined };
331
+ if(!nodeID){
332
+ console.log(`getServiceMetadata ctx.meta`, ctx.meta);
333
+ }
334
+ const key = getServiceMetadataCacherKey(nodeID, serviceName, metadataType, metadataApiName);
335
+ return await ctx.broker.cacher.get(key)
336
+ // REPLACE: return await mockCacherGet(ctx, key);
265
337
  },
266
- async refreshServiceMetadatas(ctx: any){
267
- const { offlinePackageServices: _offlinePackageServices } = ctx.params || {offlinePackageServices: undefined};
268
- if(_offlinePackageServices && _offlinePackageServices.length > 0){
269
- await clearPackageServices(ctx, _offlinePackageServices);
338
+ async refreshServiceMetadatas(ctx: any) {
339
+ const { offlinePackageServices: _offlinePackageServices } = ctx.params || { offlinePackageServices: undefined };
340
+ if (_offlinePackageServices && _offlinePackageServices.length > 0) {
341
+ // await clearPackageServices(ctx, _offlinePackageServices);
342
+ ctx.broker.broadcast(`$metadata.clearPackageServices`, { offlinePackageServicesName: _offlinePackageServices });
270
343
  }
271
344
  let packageServices = await getPackageServices(ctx);
345
+ const packageServicesName = _.pluck(packageServices, "apiName");
272
346
  const lastPackageServices = await getLastPackageServices(ctx);
273
- let offlinePackageServices =_.difference(lastPackageServices, packageServices);
274
- if(_offlinePackageServices && _offlinePackageServices.length > 0){
275
- offlinePackageServices = offlinePackageServices.concat(_offlinePackageServices);
276
- packageServices = _.difference(lastPackageServices, _offlinePackageServices)
347
+ const lastPackageServicesNames = _.pluck(lastPackageServices, "apiName");
348
+ let offlinePackageServicesName = _.difference(lastPackageServicesNames, packageServicesName);
349
+ if (_offlinePackageServices && _offlinePackageServices.length > 0) {
350
+ offlinePackageServicesName = offlinePackageServicesName.concat(_offlinePackageServices);
351
+ const onlinePackageServicesName = _.difference(lastPackageServices, _offlinePackageServices);
352
+ packageServices = _.filter(packageServices, (ps)=>{
353
+ return ps && _.include(onlinePackageServicesName, ps.apiName)
354
+ })
277
355
  }
278
- if(offlinePackageServices.length > 0){
279
- await clearPackageServices(ctx, offlinePackageServices);
280
- await clearPackageServicesMetadatas(ctx, offlinePackageServices);
356
+ if (offlinePackageServicesName.length > 0) {
357
+ // console.log(`lastPackageServicesNames`, lastPackageServicesNames)
358
+ // console.log(`packageServicesName`, packageServicesName)
359
+ // console.log(`offlinePackageServicesName`, offlinePackageServicesName);
360
+ ctx.broker.broadcast(`$metadata.clearPackageServices`, { offlinePackageServicesName });
281
361
  }
282
- await setPackageServices(ctx, packageServices);
283
- }
284
- }
362
+
363
+ //使用延时方式存储软件包记录, 防止多服务之间服务发现延时导致数据清理异常。延时来自moleculer内部的服务发现机制(broker.registry.getServiceList)
364
+ //清理数据无需做到实时,延时30秒
365
+ if(savePackageServicesTimeoutID){
366
+ clearTimeout(savePackageServicesTimeoutID);
367
+ savePackageServicesTimeoutID = null;
368
+ }
369
+ if(!savePackageServicesTimeoutID){
370
+ savePackageServicesTimeoutID = setTimeout(()=>{
371
+ setPackageServices(ctx, packageServices);
372
+ }, 30 * 1000)
373
+ }
374
+
375
+ },
376
+ };
@@ -22,12 +22,21 @@ module.exports = {
22
22
  methods: {
23
23
  refreshServiceMetadatas:async function (ctx) {
24
24
  return await ActionHandlers.refreshServiceMetadatas(ctx)
25
+ },
26
+ clearPackageServices:async function (ctx) {
27
+ const { offlinePackageServicesName } = ctx.params;
28
+ // console.log(`$metadata.clearPackageServices`, offlinePackageServicesName)
29
+ await ActionHandlers.clearPackageServices(ctx, offlinePackageServicesName);
30
+ await ActionHandlers.clearPackageServicesMetadatas(ctx, offlinePackageServicesName);
25
31
  }
26
32
  },
27
33
 
28
34
  events: {
29
35
  "$services.changed"(ctx) {
30
36
  this.refreshServiceMetadatas(ctx);
37
+ },
38
+ "$metadata.clearPackageServices"(ctx) {
39
+ this.clearPackageServices(ctx);
31
40
  }
32
41
  },
33
42
  /**
@@ -59,6 +68,11 @@ module.exports = {
59
68
  return await ActionHandlers.delete(ctx);
60
69
  }
61
70
  },
71
+ fuzzyDelete: {
72
+ async handler(ctx) {
73
+ return await ActionHandlers.fuzzyDelete(ctx);
74
+ }
75
+ },
62
76
  refreshServiceMetadatas: {
63
77
  params: {
64
78
  offlinePackageServices: { type: "array", items: "string" },