0

以下のクラス形式のオブジェクトをキャッシュしています。

public class CachedObject {

@javax.persistence.Transient
public List<ObjectA> objectAs;

@javax.persistence.Transient
public Date cacheExpirationDate;

}

キャッシュされたオブジェクトの有効期限をチェックし、有効期限が切れる前にキャッシュを更新するプロセスがあります。更新がある場合、replace (spymemcached) メソッドを使用してキャッシュされたオブジェクトを更新する別のプロセスもあります。私たちの状況では、通常、更新は objectAs に対して行われます。キャッシュされたオブジェクトが削除されることはありません。また、デフォルトのスラブ (1MB) サイズ設定で memcached を開始しました。

問題: 一部のオブジェクトを取得すると、キャッシュ オブジェクトが null ではなく、objectAs が null であることがわかります。その後、objectAs で何かをしようとすると、null ポインター例外が発生します。確認したところ、キャッシュ/更新の前に常に objectAs 値を設定しています。また、telnet インターフェイスから不完全なキャッシュ オブジェクトを確認しました。キャッシュを更新すると、キャッシュ内の完全なオブジェクトが表示されるようになりました。

誰かがおそらく間違っている可能性があることを提案できますか?

4

1 に答える 1

0

ユニット/統合のテストをさらに実行した後、このフィールドが null に設定されているケースを見つけました。したがって、質問に記載されている私の問題は、memcached キャッシュ サーバーとは何の関係もありません。これはアプリケーション関連の問題です。

于 2013-02-18T00:04:34.497 に答える