2014-10-02 4 views
0

У меня появилось странное поведение обновленной функции. Вот моя конфигурация:Oracle Coherence Refresh-Ahead: обновление не работает, если кэш запрашивается раньше, чем период истечения срока действия.

<cache-config> 
    <defaults> 
     <serializer>pof</serializer> 
     <socket-provider system-property="tangosol.coherence.socketprovider"/> 
    </defaults> 
    <caching-scheme-mapping> 
     <cache-mapping> 
      <cache-name>sample</cache-name> 
      <scheme-name>extend-near-distributed</scheme-name> 
     </cache-mapping> 
    </caching-scheme-mapping> 
    <caching-schemes> 

     <near-scheme> 
      <scheme-name>extend-near-distributed</scheme-name> 
      <front-scheme> 
       <local-scheme> 
        <high-units>20000</high-units> 
        <expiry-delay>10s</expiry-delay> 
       </local-scheme> 
      </front-scheme> 
      <back-scheme> 
       <distributed-scheme> 
        <scheme-ref>distributed</scheme-ref> 
       </distributed-scheme> 
      </back-scheme> 
      <invalidation-strategy>all</invalidation-strategy> 
     </near-scheme> 

     <distributed-scheme> 
      <scheme-name>distributed</scheme-name> 
      <service-name>sample</service-name> 
      <thread-count>20</thread-count> 
      <backing-map-scheme> 
       <read-write-backing-map-scheme> 
        <internal-cache-scheme> 
         <local-scheme> 
          <expiry-delay>10s</expiry-delay> 
         </local-scheme> 
        </internal-cache-scheme> 
        <cachestore-scheme> 
         <class-scheme> 
          <class-name> 
           com.sample.CustomCacheStore 
          </class-name> 
         </class-scheme> 
        </cachestore-scheme> 
        <refresh-ahead-factor>0.5</refresh-ahead-factor> 
       </read-write-backing-map-scheme> 
      </backing-map-scheme> 
      <autostart>true</autostart> 
     </distributed-scheme> 
    </caching-schemes> 
</cache-config> 

и если я прошу мое обслуживание с периодом 6s (10s * 0.5) секунд все нормально. У меня нет отсрочки ответа (за исключением первого раза), но если я, например, изменяю период до 3 секунд, то я начинаю получать задержки каждые 10 секунд. Я понятия не имею, почему это происходит. Похоже, если я запрошу свое обслуживание до ожидаемого периода (от 5 до 10 секунд), асинхронная загрузка не произойдет, даже если после этого я его снова запрошу. Есть ли объяснение этого и как я могу обойти это поведение?

Thanks

ответ

0

Проблема была решена. Причина, по которой у меня возникла такая ситуация, заключается в том, что передняя схема не уведомила обратную схему из-за того же времени истечения. В нескольких словах, чтобы использовать функции обновления перед ближайшим кэшем, вы должны установить время истечения времени переднего плана, равное времени мягкого истечения (в этом случае это будет 10 с * 0,5).

 Смежные вопросы

  • Нет связанных вопросов^_^