YUKI Hiroshi
null+****@clear*****
Tue Apr 21 17:31:15 JST 2015
YUKI Hiroshi 2015-04-21 17:31:15 +0900 (Tue, 21 Apr 2015) New Revision: 943c8e2bae8b31ea7a75f0246bd67f8402a7e2d4 https://github.com/droonga/express-droonga/commit/943c8e2bae8b31ea7a75f0246bd67f8402a7e2d4 Message: Extract definition of serf tag names to a separate file Added files: lib/serf/tag.js Modified files: lib/serf/agent.js lib/serf/client.js Modified: lib/serf/agent.js (+3 -2) =================================================================== --- lib/serf/agent.js 2015-04-21 10:06:04 +0900 (21763c3) +++ lib/serf/agent.js 2015-04-21 17:31:15 +0900 (77b53c2) @@ -24,7 +24,8 @@ var EventEmitter = require('events').EventEmitter, util = require('util'); var ConsoleLogger = require('../console-logger').ConsoleLogger, - Downloader = require('./downloader'); + Downloader = require('./downloader'), + Tag = require('./tag'); var NODE_NAME_PATTERN = /^([^:]+):(\d+)\/(.+)$/; var EVENT_LOG_PATTERN = /\[INFO\] serf: ([^:]+): ([^\s]+)(?: ([^\s]+))?/; @@ -94,7 +95,7 @@ Agent.prototype.tryStart = function() { '-bind', this._hostName + ':' + BIND_PORT, '-rpc-addr', this._hostName + ':' + RPC_PORT, '-log-level', 'INFO', - '-tag', 'type=protocol-adapter' + '-tag', Tag.nodeType + '=protocol-adapter' ]; this._otherMembers.forEach(function(address) { if (address.indexOf(':') < 0) Modified: lib/serf/client.js (+8 -6) =================================================================== --- lib/serf/client.js 2015-04-21 10:06:04 +0900 (b005eeb) +++ lib/serf/client.js 2015-04-21 17:31:15 +0900 (3ef9eef) @@ -26,6 +26,8 @@ var SerfRPC = require('serf-rpc'), Q = require('q'); +var Tag = require('./tag'); + var ENGINE_NODE_NAME_PATTERN = /^([^:]+):(\d+)\/(.+)$/; var DEFAULT_RPC_PORT = 7373; @@ -78,13 +80,13 @@ Client.prototype = { return this.getAllMembers().then((function(members) { var clusterIds = {}; var liveEngineNodes = members.filter(function(member) { - if (member.Tags.type != 'engine' || - member.Tags.role != 'service-provider') + if (member.Tags[Tag.nodeType] != 'engine' || + member.Tags[Tag.nodeRole] != 'service-provider') return false; var name = member.Name; if (members.some(function(member) { - return member.Tags["buffered-for-" + name] == "true"; + return member.Tags[Tag.haveUnprocessedMessagesTagFor(name)] == "true"; })) return false; @@ -94,11 +96,11 @@ Client.prototype = { if (member.HostName == this._rpcHost || member.Addr == this._rpcHost) - clusterIds.sameHost = member.Tags.cluster_id; + clusterIds.sameHost = member.Tags[Tag.clusterId]; if ((member.HostName && priorityHostsMatcher.test(member.HostName)) || priorityHostsMatcher.test(String(member.Addr))) - clusterIds.priority = member.Tags.cluster_id; + clusterIds.priority = member.Tags[Tag.clusterId]; return matched && matched[2] == this._droongaEnginePort && @@ -108,7 +110,7 @@ Client.prototype = { var clusterId = clusterIds.priority || clusterIds.sameHost; if (clusterId) liveEngineNodes = liveEngineNodes.filter(function(member) { - return member.Tags.cluster_id == clusterId; + return member.Tags[Tag.clusterId] == clusterId; }); return { clusterIds: clusterIds, Added: lib/serf/tag.js (+21 -0) 100644 =================================================================== --- /dev/null +++ lib/serf/tag.js 2015-04-21 17:31:15 +0900 (abcc7c0) @@ -0,0 +1,21 @@ +var HAVE_UNPROCESSED_MESSAGES_TAG_PREFIX = 'buffered-for-'; + +module.exports = { + nodeType: 'type', + nodeRole: 'role', + internalNodeName: 'internal-name', + clusterId: 'cluster_id', + + acceptMessagesNewerThan: 'accept-newer-than', + lastProcessedMessageTimestamp: 'last-timestamp', + + haveUnprocessedMessagesTagFor: function(nodeName) { + return HAVE_UNPROCESSED_MESSAGES_TAG_PREFIX + nodeName; + }, + isHaveUnprocessedMessagesTag: function(tag) { + return tag.indexOf(HAVE_UNPROCESSED_MESSAGES_TAG_PREFIX == 0); + }, + extractNodeNameFromHaveUnprocessedMessagesTag: function(tag) { + return tag.replace(HAVE_UNPROCESSED_MESSAGES_TAG_PREFIX, ''); + } +}; -------------- next part -------------- HTML����������������������������... Download