• R/O
  • SSH
  • HTTPS

okuyama: 提交


Commit MetaInfo

修訂1018 (tree)
時間2013-04-11 15:31:36
作者okuyamaoo

Log Message

okuyamaをマルチマスター化するための最初のokuyamaクライアントの改造を完了したところ

Change Summary

差異

--- trunk/src/okuyama/imdst/helper/MasterConfigurationManagerHelper.java (revision 1017)
+++ trunk/src/okuyama/imdst/helper/MasterConfigurationManagerHelper.java (revision 1018)
@@ -610,8 +610,14 @@
610610 }
611611
612612
613- // 全てのマスターノードの接続情報
614- imdstKeyValueClient.setValue(ImdstDefine.ConfigSaveNodePrefix + ImdstDefine.Prop_DistributionAlgorithm, dispatchMode);
613+ // 分散アルゴリズム情報
614+ nodeRet = imdstKeyValueClient.getValue(ImdstDefine.ConfigSaveNodePrefix + ImdstDefine.Prop_DistributionAlgorithm);
615+ if (nodeRet[0].equals("false") && StatusUtil.isMainMasterNode()) {
616+ // 設定情報の枠がない場合は自身の情報を登録
617+ imdstKeyValueClient.setValue(ImdstDefine.ConfigSaveNodePrefix + ImdstDefine.Prop_DistributionAlgorithm, dispatchMode);
618+ } else if (nodeRet[0].equals("error")) {
619+ // 何もしない
620+ }
615621
616622
617623 // ConsistentHashModeの場合はノードの追加要望がないかを調べる
--- trunk/src/okuyama/imdst/client/OkuyamaClient.java (revision 1017)
+++ trunk/src/okuyama/imdst/client/OkuyamaClient.java (revision 1018)
@@ -238,8 +238,9 @@
238238 // Defaultエンコーディング
239239 private static String platformDefaultEncoding = Charset.defaultCharset().name();
240240
241+ // okuyamaをマルチクラスター化した場合のスレーブのクラスターのMasterNodeのアドレス:port名
242+ private String slaveOkuyamaClusterNode = null;
241243
242-
243244 /**
244245 * コンストラクタ
245246 *
@@ -296,6 +297,19 @@
296297 * @param masterNodes 接続情報の配列 "IP:PORT"の形式
297298 */
298299 public void setConnectionInfos(String[] masterNodes) {
300+ this.setConnectionInfos(masterNodes, null);
301+ }
302+
303+ /**
304+ * MasterNodeの接続情報を設定する.<br>
305+ * 本メソッドでセットし、autoConnect()メソッドを<br>
306+ * 呼び出すと、自動的にその時稼動しているMasterNodeにバランシングして<br>
307+ * 接続される。接続出来ない場合は、別のMasterNodeに再接続される.<br>
308+ *
309+ * @param masterNodes 接続情報の配列 "IP:PORT"の形式
310+ * @param slaveOkuyamaClusterNode スレーブのokuyamaのMasterNodeのアドレスとポート番号(フォーマットは"アドレス:ポート番号")
311+ */
312+ public void setConnectionInfos(String[] masterNodes, String slaveOkuyamaClusterNode) {
299313 this.initParamMasterNodes = masterNodes;
300314
301315 this.masterNodesList = new ArrayList(masterNodes.length);
@@ -302,6 +316,8 @@
302316 for (int i = 0; i < masterNodes.length; i++) {
303317 this.masterNodesList.add(masterNodes[i]);
304318 }
319+
320+ this.slaveOkuyamaClusterNode = slaveOkuyamaClusterNode;
305321 }
306322
307323 /**
@@ -420,7 +436,21 @@
420436 }
421437 if(tmpMasterNodeList.size() < 1) {
422438
423- throw new OkuyamaClientException(e);
439+ if (this.slaveOkuyamaClusterNode == null) {
440+ throw new OkuyamaClientException(e);
441+ } else {
442+ // スレーブのokuyamaクラスターが存在する場合はこちらの処理
443+ while (true) {
444+ // スレーブに接続を試みる
445+ try {
446+ // スレーブのポートを起動するのは手動なので、繋がるまでリトライ
447+ String[] slaveOkuyamaClusterNodeInfo = slaveOkuyamaClusterNode.split(":");
448+ this.connect(slaveOkuyamaClusterNodeInfo[0], Integer.parseInt(slaveOkuyamaClusterNodeInfo[1]));
449+ return;
450+ } catch (Exception slaveConnectEx){
451+ }
452+ }
453+ }
424454 }
425455 }
426456 }
Show on old repository browser