Я использую JCS для кеширования. Теперь я использую дисковый кеш для временного хранения всех данных. Проблема в том, что когда я использую JCS, ключи записываются на диск, только если кеш должным образом отключен.
Я использую шаблон использования диска в качестве ОБНОВЛЕНИЯ, который говорит JCS немедленно записывать данные на диск, не сохраняя их в памяти. Но проблема в том, что мы не поддерживаем список ключей объектов в кэше. Поэтому я использую групповой кэш получить и получить ключи из кэша, а затем перебрать ключи, чтобы получить результаты.
Так что теперь я попал в ситуацию, когда мне нужно правильно отключить кэш, то есть после того, как все данные записаны на диск с использованием индексированного дискового кэша. Но здесь есть сложность, индексированный дисковый кэш использует фоновый поток для записи на диск, который ничего не возвращает по своему состоянию.
Итак, теперь я не могу гарантировать, что индексированный дисковый кэш записал данные на диск в мою реализацию интерфейса. Есть способ справиться с этой ситуацией, потому что сейчас я просто сплю какое-то случайное время (скажем, 10 секунд) до отключения кэша, что на самом деле является очень глупым способом сделать это.
Редактировать: Я сталкиваюсь с этой проблемой и с кешем памяти, но для 500 Мбайт данных не хватает одной секунды. Но случай с дисковым кешем немного отличается.