• R/O
  • SSH
  • HTTPS

okuyama: 提交


Commit MetaInfo

修訂811 (tree)
時間2011-10-20 17:19:38
作者okuyamaoo

Log Message

(empty log message)

Change Summary

差異

--- trunk/src/okuyama/imdst/util/KeyMapManager.java (revision 810)
+++ trunk/src/okuyama/imdst/util/KeyMapManager.java (revision 811)
@@ -527,10 +527,10 @@
527527
528528
529529 // 有効期限切れデータの削除
530- // 実行指定(ImdstDefine.vacuumInvalidDataFlg)がtrueの場合に1時間に1回実行される
531- // このif文に到達するのが1分に1回なので、それを30回繰り返すと削除処理を実行する
530+ // 実行指定(ImdstDefine.vacuumInvalidDataFlg)がtrueの場合に実行される
531+ // このif文に到達するのが1分に1回なので、それを規定回数繰り返すと削除処理を実行する
532532 // 差分データ取集中は行わない
533- if (dataMemory == true && ImdstDefine.vacuumInvalidDataFlg == true && vacuumInvalidDataCount > ImdstDefine.startVaccumInvalidCount && diffDataPoolingFlg == false) {
533+ if ((dataMemory == true || ImdstDefine.vacuumInvalidDataCompulsion == true) && ImdstDefine.vacuumInvalidDataFlg == true && vacuumInvalidDataCount > ImdstDefine.startVaccumInvalidCount && diffDataPoolingFlg == false) {
534534 logger.info("VacuumInvalidData - Start - 1");
535535
536536 synchronized(this.poolKeyLock) {
@@ -804,8 +804,13 @@
804804
805805 //logger.debug("setKeyPairOnlyOnce - synchronized - start");
806806
807- if(this.containsKeyPair(key)) return ret;
807+ if(this.containsKeyPair(key)) {
808808
809+ String tmp = keyMapObjGet(key);
810+
811+ if(!isExpireData(tmp)) return ret;
812+ }
813+
809814 if (this.moveAdjustmentDataMap != null) {
810815 synchronized (this.moveAdjustmentSync) {
811816 if (this.moveAdjustmentDataMap != null && this.moveAdjustmentDataMap.containsKey(key) && moveData == false)
@@ -3251,6 +3256,39 @@
32513256 }
32523257
32533258
3259+ // 有効期限切れデータの場合はtrueが返る
3260+ private static boolean isExpireData(String valStr) {
3261+ String[] checkValueSplit = null;
3262+
3263+ if (valStr != null && valStr.length() <= 1000) {
3264+
3265+ String[] valStrSplit = valStr.split(ImdstDefine.setTimeParamSep);
3266+ valStr = valStrSplit[0];
3267+ checkValueSplit = valStr.split(ImdstDefine.keyHelperClientParamSep);
3268+ } else if (valStr != null && valStr.length() >= 1001){
3269+
3270+ if (valStr.indexOf(ImdstDefine.keyHelperClientParamSep, (valStr.length() - 100)) != -1) {
3271+ String[] valStrSplit = valStr.split(ImdstDefine.setTimeParamSep);
3272+ valStr = valStrSplit[0];
3273+ checkValueSplit = valStr.split(ImdstDefine.keyHelperClientParamSep);
3274+ }
3275+ } else {
3276+ return false;
3277+ }
3278+
3279+ // 有効期限チェックを行う
3280+ if (checkValueSplit != null && checkValueSplit.length > 1) {
3281+
3282+ String[] metaColumns = checkValueSplit[1].split(ImdstDefine.valueMetaColumnSep);
3283+ if (!SystemUtil.expireCheck(metaColumns[1], 1)) {
3284+
3285+ return true;
3286+ }
3287+ }
3288+ return false;
3289+ }
3290+
3291+
32543292 public void dump() {
32553293 try {
32563294 System.out.println("-------------------------------------- Dump Start ------------------------------------");
@@ -3400,6 +3438,7 @@
34003438 }
34013439 }
34023440
3441+
34033442 public void close() {
34043443 if (this.tBw != null) {
34053444 try {
--- trunk/src/okuyama/imdst/util/ImdstDefine.java (revision 810)
+++ trunk/src/okuyama/imdst/util/ImdstDefine.java (revision 811)
@@ -473,7 +473,10 @@
473473
474474 // 有効期限切れデータバキューム実行指定
475475 public volatile static boolean vacuumInvalidDataFlg = true;
476+ // 有効期限切れデータバキューム実行強制指定
477+ public volatile static boolean vacuumInvalidDataCompulsion = false;
476478
479+
477480 // 有効期限切れデータ削除チェックサイクル(単位:分)
478481 public static int startVaccumInvalidCount = 29;
479482
--- trunk/src/okuyama/imdst/process/ServerPreprocess.java (revision 810)
+++ trunk/src/okuyama/imdst/process/ServerPreprocess.java (revision 811)
@@ -15,16 +15,18 @@
1515 * -c MasterNodeの無操作コネクションタイムアウト時間(秒)<br>
1616 * -S DataNodeのValueの保存可能最大サイズ(バイト)<br>
1717 * -s DataNodeのValueの共通データファイルへの書き出し中間サイズ(バイト)(DataNode用設定ファイルのdataMemory=trueの場合のみ有効)<br>
18- * -v 分散モードがConsistentHash時(MasterNode用設定ファイルのDistributionAlgorithm=consistenthashの場合のみ)のVirtualNodeの数
19- * -fa ImdstDefine.parallelDiskAccess /ファイルシステムへの同時アクセス係数(整数)
20- * -ncot ImdstDefine.nodeConnectionOpenTimeout /DataNodeへのSocketコネクションOpenのタイムアウト閾値(ミリ秒)
21- * -nct ImdstDefine.nodeConnectionTimeout /DataNodeへのSocketコネクションreadのタイムアウト閾値(ミリ秒)
22- * -mmgrs ImdstDefine.maxMultiGetRequestSize /getMultiValueの際に一度にDataNodeに問い合わせるRequestKeyの数
23- * -sidc ImdstDefine.searchIndexDistributedCount /検索Indexを並列に作成する場合の並列数
24- * -gaetu ImdstDefine.getAndExpireTimeUpdate /データの有効期限をGetメソッドで更新するかの指定
25- * -fbmnk ImdstDefine.fileBaseMapNumberOfOneFileKey /FileBaseDataMapで1KeyファイルにどれだけのKey値を保存するかの指定
26- * -tlft ImdstDefine.transactionLogFsyncType /WALログのファイルシステムへのfsync係数(0=OSでの自動sync制御、1=fsync回数低、2=fsync回数中、3=fsync回数高、4=常にfsync
27- * -vidf ImdstDefine.vacuumInvalidDataFlg /有効期限切れのデータのクリーニングを行うかどうかの設定 true=行う false=行わない
18+ * -v 分散モードがConsistentHash時(MasterNode用設定ファイルのDistributionAlgorithm=consistenthashの場合のみ)のVirtualNodeの数<br>
19+ * -fa ImdstDefine.parallelDiskAccess /ファイルシステムへの同時アクセス係数(整数)<br>
20+ * -ncot ImdstDefine.nodeConnectionOpenTimeout /DataNodeへのSocketコネクションOpenのタイムアウト閾値(ミリ秒)<br>
21+ * -nct ImdstDefine.nodeConnectionTimeout /DataNodeへのSocketコネクションreadのタイムアウト閾値(ミリ秒)<br>
22+ * -mmgrs ImdstDefine.maxMultiGetRequestSize /getMultiValueの際に一度にDataNodeに問い合わせるRequestKeyの数<br>
23+ * -sidc ImdstDefine.searchIndexDistributedCount /検索Indexを並列に作成する場合の並列数<br>
24+ * -gaetu ImdstDefine.getAndExpireTimeUpdate /データの有効期限をGetメソッドで更新するかの指定<br>
25+ * -fbmnk ImdstDefine.fileBaseMapNumberOfOneFileKey /FileBaseDataMapで1KeyファイルにどれだけのKey値を保存するかの指定<br>
26+ * -tlft ImdstDefine.transactionLogFsyncType /WALログのファイルシステムへのfsync係数(0=OSでの自動sync制御、1=fsync回数低、2=fsync回数中、3=fsync回数高、4=常にfsync<br>
27+ * -vidf ImdstDefine.vacuumInvalidDataFlg /有効期限切れのデータのクリーニングを行うかどうかの設定 true=行う false=行わない ※trueを指定するとファイルをストレージに使っている場合も実行される<br>
28+ * -svic ImdstDefine.startVaccumInvalidCount /有効期限切れのデータのクリーニングを行う間隔(分/単位)<br>
29+ *
2830 * <br>
2931 * @author T.Okuyama
3032 * @license GPL(Lv3)
@@ -189,9 +191,20 @@
189191 if (startOptions.length > (i+1)) {
190192 if (startOptions[i+1] != null && startOptions[i+1].trim().equals("false")) {
191193 ImdstDefine.vacuumInvalidDataFlg = false;
194+ } else if (startOptions[i+1] != null && startOptions[i+1].trim().equals("true")){
195+ ImdstDefine.vacuumInvalidDataCompulsion = true;
192196 }
193197 }
194198 }
199+
200+ if (startOptions[i].trim().equals("-svic")) {
201+ if (startOptions.length > (i+1)) {
202+ try {
203+ ImdstDefine.startVaccumInvalidCount = Integer.parseInt(startOptions[i+1]);
204+ } catch(NumberFormatException nfe) {
205+ }
206+ }
207+ }
195208 }
196209 }
197210 } catch (Exception e) {
Show on old repository browser