2014-10-02 25 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秒)之前請求我的服務,即使之後我再次請求異步加載也不會發生。有沒有任何解釋,我怎麼能繞過這種行爲?

謝謝

回答

0

問題已解決。我之所以出現這種情況,是因爲前期計劃由於到期時間相同而沒有通知退款計劃。簡而言之,要在near cache中使用refresh-ahead功能,必須將front-scheme的到期時間設置爲soft-expiration time(在這種情況下,它將爲10s * 0.5)。