@steedos/service-package-loader 2.1.89 → 2.2.1

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.
Files changed (2) hide show
  1. package/index.js +30 -0
  2. package/package.json +4 -4
package/index.js CHANGED
@@ -7,6 +7,7 @@ const sendPackageFlowToDb = require('./lib/loadPackageFlow').sendPackageFlowToDb
7
7
  const path = require('path');
8
8
  const Future = require('fibers/future');
9
9
  const _ = require('lodash');
10
+ const globby = require("globby");
10
11
  /**
11
12
  * @typedef {import('moleculer').Context} Context Moleculer's Context
12
13
  */
@@ -93,6 +94,24 @@ module.exports = {
93
94
  await this.broker.call(`@steedos/service-packages.setPackageRoutersInfo`, {packageName: name, data: routersInfo})
94
95
  return;
95
96
  }).promise();
97
+ },
98
+ loadPackageMetadataServices: async function (packagePath) {
99
+ const filePatten = [
100
+ path.join(packagePath, 'main', 'default', 'services', `*.service.js`),
101
+ "!" + path.join(packagePath, "**", "node_modules"),
102
+ ];
103
+ const matchedPaths = globby.sync(filePatten);
104
+ for await (const serviceFilePath of matchedPaths) {
105
+ try {
106
+ const service = this.broker.loadService(serviceFilePath);
107
+ this.packageServices.push(service);
108
+ if (!this.broker.started) {
109
+ this.broker._restartService(service)
110
+ }
111
+ } catch (error) {
112
+ this.logger.error(error)
113
+ }
114
+ }
96
115
  }
97
116
  },
98
117
 
@@ -100,6 +119,7 @@ module.exports = {
100
119
  * Service created lifecycle event handler
101
120
  */
102
121
  created() {
122
+ this.packageServices = []; //此属性不能放到settings下,否则会导致mo clone settings 时 内存溢出。
103
123
  this.logger.debug('service package loader created!!!');
104
124
  },
105
125
 
@@ -135,6 +155,9 @@ module.exports = {
135
155
 
136
156
  }
137
157
  }
158
+
159
+ await this.loadPackageMetadataServices(_path);
160
+
138
161
  console.timeEnd(`service ${this.name} started`)
139
162
  // console.log(`service ${this.name} started`);
140
163
  },
@@ -143,6 +166,13 @@ module.exports = {
143
166
  * Service stopped lifecycle event handler
144
167
  */
145
168
  async stopped() {
169
+ for await (const packageService of this.packageServices) {
170
+ try {
171
+ await this.broker.destroyService(packageService);
172
+ } catch (error) {
173
+ this.logger.errorr(error);
174
+ }
175
+ }
146
176
  this.broker.call(`@steedos/service-packages.offline`, {serviceInfo: {name: this.name, nodeID: this.broker.nodeID, instanceID: this.broker.instanceID}})
147
177
  await this.broker.call(`metadata.refreshServiceMetadatas`, { offlinePackageServices: [`${this.broker.nodeID}.${this.name}`] });
148
178
  console.log(`service ${this.name} stopped`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steedos/service-package-loader",
3
- "version": "2.1.89",
3
+ "version": "2.2.1",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -11,8 +11,8 @@
11
11
  "author": "",
12
12
  "license": "MIT",
13
13
  "dependencies": {
14
- "@steedos/core": "2.1.89",
15
- "@steedos/objectql": "2.1.89",
14
+ "@steedos/core": "2.2.1",
15
+ "@steedos/objectql": "2.2.1",
16
16
  "clone": "^2.1.2",
17
17
  "globby": "^11.0.2",
18
18
  "moleculer": "^0.14.12",
@@ -32,5 +32,5 @@
32
32
  "publishConfig": {
33
33
  "access": "public"
34
34
  },
35
- "gitHead": "4b2cd15644d673357382176b925003df5d03ba31"
35
+ "gitHead": "0f747034edce2560dd1f39e2259c8e4d20528be2"
36
36
  }