Skip to content

v3.1.1 - キャッシュヒット率0%問題の修正

Choose a tag to compare

@hacker65536 hacker65536 released this 18 Dec 03:05
· 9 commits to main since this release
8bf6ce7

AWS CLI Cache v3.1.1 - 重要なバグ修正

🐛 キャッシュヒット率 0%問題の完全解決

このリリースでは、AWS CLI Cache が全く機能しなかった根本的な問題を修正しました。

修正された問題

症状: キャッシュが全く効かない(毎回 AWS API を呼び出し)
原因: ファイル作成時と検索時で異なるタイムスタンプを使用
影響: キャッシュヒット率が 0%

技術的詳細

修正前の問題

# ファイル作成時(例: 12:00:00)
timestamp=$(date +%s)  # 1766024800
filename="hash_3600_1766024800_12345.cache"

# ファイル検索時(例: 12:00:03、3秒後)
timestamp=$(date +%s)  # 1766024803(異なる!)
search_pattern="hash_3600_*_12345.cache"  # マッチしない

修正後の解決策

# シンプルなファイル名(タイムスタンプなし)
filename="hash_3600_12345.cache"

# ファイルシステムのmtimeでTTLチェック
file_mtime=$(stat -f %m "$cache_file")
expiry_time=$((file_mtime + file_ttl))

修正内容

  1. ファイル名生成の修正

    • タイムスタンプを完全に削除
    • 同じコマンド + 同じ TTL = 常に同じファイル名
  2. TTL 有効性チェックの改善

    • ファイル名のタイムスタンプ → ファイルシステムの mtime
    • より正確で信頼性の高い TTL チェック
  3. 正規表現パターンの修正

    • ファイル名形式に合わせて正規表現を調整
    • 3 フィールド → 2 フィールドに変更

影響を受けた関数

  • get_cache_file() - ファイル名生成の修正
  • find_valid_cache_file() - キャッシュ検索の修正
  • is_cache_valid() - TTL チェックの修正
  • aws_cached() - verbose 出力の修正

修正効果

項目 修正前 修正後
キャッシュヒット率 0% 正常動作
ファイル名の一意性 毎回異なる 同じコマンドで同一
TTL チェックの精度 不正確 正確
正規表現マッチ 失敗 成功

動作確認例

# 1回目の実行(キャッシュミス)
$ aws_cached --verbose sts get-caller-identity
[CACHE] Miss: Executing AWS CLI
[CACHE] Saved to: ~/.cache/aws-cli/default/sts/global/get-caller-identity/abc123_3600_12345.cache

# 2回目の実行(キャッシュヒット)
$ aws_cached --verbose sts get-caller-identity
[CACHE] Hit: ~/.cache/aws-cli/default/sts/global/get-caller-identity/abc123_3600_12345.cache
[CACHE] Age: 2s, Remaining: 3598s, TTL: 3600s

アップグレード方法

# 最新版をダウンロード
curl -O https://raw.githubusercontent.com/hacker65536/aws-cli-cache/v3.1.1/aws_cache.sh

# または git pull
git pull origin main

互換性

  • ✅ 既存のキャッシュファイルとの互換性を維持
  • ✅ 既存の設定ファイルをそのまま使用可能
  • ✅ 環境変数の変更不要

重要度

🔴 高: この修正により、AWS CLI Cache が本来の性能を発揮できるようになります。v3.0.0 以前をご利用の方は、できるだけ早くアップグレードすることを強く推奨します。


Full Changelog: v3.1.0...v3.1.1