cloudcms-server 0.9.267 → 0.9.268

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,13 +1,12 @@
1
- var clusterlock = require("../../temp/clusterlock");
2
-
3
1
  const cluster = require("cluster");
4
2
  const { Server } = require("socket.io");
5
- const numCPUs = require("os").cpus().length;
6
3
  const { setupMaster, setupWorker } = require("@socket.io/sticky");
7
4
  const { createAdapter, setupPrimary } = require("@socket.io/cluster-adapter");
8
5
 
9
- // numCPUs = 1;
10
- // console.log("FORCE ONE CPU");
6
+ var numCPUs = require("os").cpus().length;
7
+ if (process.env.FORCE_SINGLE_CPU) {
8
+ numCPUs = 1;
9
+ }
11
10
 
12
11
  module.exports = function(config) {
13
12
 
@@ -17,25 +16,23 @@ module.exports = function(config) {
17
16
  {
18
17
  // setup sticky sessions
19
18
  setupMaster(httpServer, {
20
- loadBalancingMethod: "least-connection"
19
+ //loadBalancingMethod: "least-connection"
20
+ loadBalancingMethod: "round-robin"
21
21
  });
22
22
 
23
23
  // setup connections between the workers
24
24
  setupPrimary();
25
25
 
26
26
  // needed for packets containing buffers
27
- cluster.setupPrimary({
28
- serialization: "advanced"
29
- });
27
+ // cluster.setupPrimary({
28
+ // serialization: "advanced"
29
+ // });
30
30
 
31
31
  return callback();
32
32
  };
33
33
 
34
34
  r.afterStartCluster = function(httpServer, callback)
35
35
  {
36
- // start up cluster locks
37
- clusterlock.setup();
38
-
39
36
  var startupCount = 0;
40
37
 
41
38
  var workers = [];
@@ -2,6 +2,7 @@ const { Server } = require("socket.io");
2
2
  const { setupWorker } = require("@socket.io/sticky");
3
3
  const { createAdapter } = require("@socket.io/redis-adapter");
4
4
  const redisHelper = require("../../util/redis");
5
+ const IORedis = require("ioredis");
5
6
 
6
7
  const clusterLauncherFactory = require("./cluster");
7
8
 
@@ -23,61 +24,46 @@ module.exports = function(config) {
23
24
 
24
25
  r.afterStartServer = function(app, httpServer, callback)
25
26
  {
26
- (async function(app, httpServer, callback) {
27
- var redisOptions = redisHelper.redisOptions({}, "CLOUDCMS_CLUSTER");
28
- await redisHelper.createAndConnect(redisOptions, function(err, _client) {
29
-
30
- const pubClient = _client;
31
- const subClient = pubClient.duplicate();
32
-
33
- pubClient.on("error", function(err) {
34
- // something went wrong
35
- console.log("Pub Client caught error: ", err);
36
- });
37
-
38
- subClient.on("error", function(err) {
39
- // something went wrong
40
- console.log("Sub Client caught error: ", err);
41
- });
42
-
43
- const io = new Server(httpServer);
44
- httpServer.io = io;
45
-
46
- io.engine.on("connection_error", function(err) {
47
- // console.log("CONNECTION ERROR");
48
- // console.log("REQUEST: " + err.req); // the request object
49
- // console.log("CODE: " + err.code); // the error code, for example 1
50
- // console.log("MESSAGE: " + err.message); // the error message, for example "Session ID unknown"
51
- // console.log("CONTEXT: " + err.context); // some additional error context
52
- });
53
-
54
- // use the redis adapter
55
- io.adapter(createAdapter(pubClient, subClient, {
56
- //publishOnSpecificResponseChannel: true
57
- }));
58
-
59
- // setup connection with the primary process
60
- setupWorker(io);
61
-
62
- // on connect
63
- io.on("connection", (socket) => {
64
- //console.log("Redis Launcher on('connection') - socket id:" + socket.id);
65
- // socket.on('message', function(m) {
66
- // console.log("Socket Connection message: " + m);
67
- // });
68
- //
69
- // // always catch err
70
- // socket.on("error", function(err) {
71
- // console.log("Caught socket error");
72
- // console.log(err.stack);
73
- // });
74
-
75
- // TODO
76
- });
77
-
78
- return callback();
27
+ var redisOptions = redisHelper.redisOptions({}, "CLOUDCMS_CLUSTER");
28
+ var pubClient = new IORedis(redisOptions.url);
29
+ var subClient = pubClient.duplicate();
30
+
31
+ const io = new Server(httpServer);
32
+ httpServer.io = io;
33
+
34
+ io.engine.on("connection_error", function(err) {
35
+ console.log("CONNECTION ERROR");
36
+ // console.log("REQUEST: ", err.req); // the request object
37
+ // console.log("CODE: " + err.code); // the error code, for example 1
38
+ console.log("MESSAGE: ", err.message); // the error message, for example "Session ID unknown"
39
+ // console.log("CONTEXT: ", err.context); // some additional error context
40
+ });
41
+
42
+ // use the redis adapter
43
+ io.adapter(createAdapter(pubClient, subClient, {
44
+ //publishOnSpecificResponseChannel: true
45
+ }));
46
+
47
+ // setup connection with the primary process
48
+ setupWorker(io);
49
+
50
+ // on connect
51
+ io.on("connection", (socket) => {
52
+ console.log("Redis Launcher on('connection') - socket id:" + socket.id);
53
+ socket.on('message', function(m) {
54
+ console.log("Socket Connection message: " + m);
79
55
  });
80
- })(app, httpServer, callback);
56
+
57
+ // always catch err
58
+ socket.on("error", function(err) {
59
+ console.log("Caught socket error");
60
+ console.log(err.stack);
61
+ });
62
+
63
+ // TODO
64
+ });
65
+
66
+ return callback();
81
67
  };
82
68
 
83
69
  return r;
@@ -13,6 +13,8 @@ exports = module.exports = function(lockConfig)
13
13
 
14
14
  r.init = function(callback)
15
15
  {
16
+ ClusterLock.setup();
17
+
16
18
  callback();
17
19
  };
18
20
 
@@ -52,21 +52,13 @@ class AbstractAsyncProvider extends AbstractProvider
52
52
  {
53
53
  var self = this;
54
54
 
55
- //console.log("a1");
56
- self._lock("channels", function(err, releaseLockFn) {
57
- // console.log("a2: ", err);
58
- // console.log("a3: ", releaseLockFn);
59
- self.doRegister(channelId, user, function(err) {
60
- // console.log("a4 ", err);
61
- callback(err);
62
- // console.log("a5: ", releaseLockFn);
63
- return releaseLockFn();
64
- });
55
+ self.doRegister(channelId, user, function(err) {
56
+ callback(err);
65
57
  });
66
58
  }
67
59
 
68
60
  /**
69
- * Workhorse method. The "channels" lock is taken out ahead of this being called.
61
+ * Workhorse method.
70
62
  *
71
63
  * @param channelId
72
64
  * @param user
@@ -163,21 +155,6 @@ class AbstractAsyncProvider extends AbstractProvider
163
155
  {
164
156
  var self = this;
165
157
 
166
- self._lock("channels", function(err, releaseLockFn) {
167
- self._expire(beforeMs, function(err) {
168
- callback(err);
169
- return releaseLockFn();
170
- });
171
- });
172
- }
173
-
174
- /**
175
- * @override
176
- */
177
- _expire(beforeMs, callback)
178
- {
179
- var self = this;
180
-
181
158
  self.listChannelIds(function(err, channelIds) {
182
159
 
183
160
  if (err) {
package/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  },
7
7
  "name": "cloudcms-server",
8
8
  "description": "Cloud CMS Application Server Module",
9
- "version": "0.9.267",
9
+ "version": "0.9.268",
10
10
  "repository": {
11
11
  "type": "git",
12
12
  "url": "git://github.com/gitana/cloudcms-server.git"
@@ -37,7 +37,7 @@
37
37
  "dustjs-linkedin": "^3.0.1",
38
38
  "errorhandler": "^1.5.1",
39
39
  "express": "^4.17.1",
40
- "express-session": "^1.16.2",
40
+ "express-session": "^1.17.3",
41
41
  "express-useragent": "^1.0.13",
42
42
  "extend-with-super": "^2.0.0",
43
43
  "gitana": "^1.0.322",
@@ -84,7 +84,7 @@
84
84
  "serve-favicon": "^2.5.0",
85
85
  "session-file-store": "^0.2.2",
86
86
  "sha1": "^1.1.1",
87
- "socket.io": "^4.4.1",
87
+ "socket.io": "^4.5.1",
88
88
  "ssl-root-cas": "^1.3.1",
89
89
  "stomp-client": "^0.9.0",
90
90
  "targz": "^1.0.1",
package/server/index.js CHANGED
@@ -740,17 +740,13 @@ var initSession = function(initDone)
740
740
  }
741
741
  else if (process.configuration.session.type === "redis")
742
742
  {
743
+ var IORedis = require("ioredis");
743
744
  var redisOptions = redisHelper.redisOptions();
744
- return redisHelper.createAndConnect(redisOptions, function(err, redisClient) {
745
-
746
- if (err) {
747
- return initDone(err);
748
- }
749
-
750
- var RedisStore = connectRedis(session);
751
- sessionConfig.store = new RedisStore({ client: redisClient });
752
- initDone(null, session(sessionConfig));
753
- });
745
+ var redisClient = new IORedis(redisOptions.url);
746
+
747
+ var RedisStore = connectRedis(session);
748
+ sessionConfig.store = new RedisStore({ client: redisClient });
749
+ initDone(null, session(sessionConfig));
754
750
  }
755
751
  else if (process.configuration.session.type === "memory" || !process.configuration.session.type)
756
752
  {
@@ -36,6 +36,9 @@ server.after(function(app, callback) {
36
36
  server.report(function(callback) {
37
37
 
38
38
  var cpuCount = require('os').cpus().length;
39
+ if (process.env.FORCE_SINGLE_CPU) {
40
+ cpuCount = 1;
41
+ }
39
42
 
40
43
  var port = process.env.PORT;
41
44