Why does write behind require to enable write through?

classic Classic list List threaded Threaded
5 messages Options
relax ken relax ken
Reply | Threaded
Open this post in threaded view
|

Why does write behind require to enable write through?

Hi,

I am new to Ignite. When I enable write behind, I always get a warning "Write-behind mode for the cache store also requires CacheConfiguration.setWriteThrough(true) property." Why does write behind require write through when I am using write behind only?

Here is my configuration

CacheConfiguration<String, Document> cconfig = new CacheConfiguration<>();
cconfig.setAtomicityMode(CacheAtomicityMode.ATOMIC);
cconfig.setCacheMode(CacheMode.PARTITIONED);
cconfig.setName(Constants.DocCacheName);
cconfig.setExpiryPolicyFactory(TouchedExpiryPolicy.factoryOf(new Duration(TimeUnit.SECONDS, cacheConfig.cacheExpirySecs)));

cconfig.setWriteBehindEnabled(true);
cconfig.setWriteBehindFlushFrequency(cacheConfig.writeBehindFlushIntervalSec); // MS

Thanks

Ken
ilya.kasnacheev ilya.kasnacheev
Reply | Threaded
Open this post in threaded view
|

Re: Why does write behind require to enable write through?

Hello!

It is because write-behing is a kind of write-through. Like random access memory is a kind of computer memory.

Regards,
--
Ilya Kasnacheev


вт, 5 мар. 2019 г. в 14:43, relax ken <[hidden email]>:
Hi,

I am new to Ignite. When I enable write behind, I always get a warning "Write-behind mode for the cache store also requires CacheConfiguration.setWriteThrough(true) property." Why does write behind require write through when I am using write behind only?

Here is my configuration

CacheConfiguration<String, Document> cconfig = new CacheConfiguration<>();
cconfig.setAtomicityMode(CacheAtomicityMode.ATOMIC);
cconfig.setCacheMode(CacheMode.PARTITIONED);
cconfig.setName(Constants.DocCacheName);
cconfig.setExpiryPolicyFactory(TouchedExpiryPolicy.factoryOf(new Duration(TimeUnit.SECONDS, cacheConfig.cacheExpirySecs)));

cconfig.setWriteBehindEnabled(true);
cconfig.setWriteBehindFlushFrequency(cacheConfig.writeBehindFlushIntervalSec); // MS

Thanks

Ken
relax ken relax ken
Reply | Threaded
Open this post in threaded view
|

Re: Why does write behind require to enable write through?

Thanks Ilya. I guess conceptually there are many explanations and definitions about those two on Internet which may agree, disagree, or consensus on some point. My question is more about their impact when they are true or false in Ignite.

For example, if it's always the case, why doesn't Ignite just encapsulate this kind assumption, take care it and auto set write through true while write behind is set to true. Why does Ignite give this kind of option and warning? Will there be any difference when write behind is true but write through is not true? try to understand deeper about those options to avoid any unexpected behaviour.

On Tue, Mar 5, 2019 at 1:46 PM Ilya Kasnacheev <[hidden email]> wrote:
Hello!

It is because write-behing is a kind of write-through. Like random access memory is a kind of computer memory.

Regards,
--
Ilya Kasnacheev


вт, 5 мар. 2019 г. в 14:43, relax ken <[hidden email]>:
Hi,

I am new to Ignite. When I enable write behind, I always get a warning "Write-behind mode for the cache store also requires CacheConfiguration.setWriteThrough(true) property." Why does write behind require write through when I am using write behind only?

Here is my configuration

CacheConfiguration<String, Document> cconfig = new CacheConfiguration<>();
cconfig.setAtomicityMode(CacheAtomicityMode.ATOMIC);
cconfig.setCacheMode(CacheMode.PARTITIONED);
cconfig.setName(Constants.DocCacheName);
cconfig.setExpiryPolicyFactory(TouchedExpiryPolicy.factoryOf(new Duration(TimeUnit.SECONDS, cacheConfig.cacheExpirySecs)));

cconfig.setWriteBehindEnabled(true);
cconfig.setWriteBehindFlushFrequency(cacheConfig.writeBehindFlushIntervalSec); // MS

Thanks

Ken
Павлухин Иван Павлухин Иван
Reply | Threaded
Open this post in threaded view
|

Re: Why does write behind require to enable write through?

Hi,

Ignite CacheConfiguration inherits setWriteThrough method from JCache
API [1]. Enabled writeThrough in JCache means that cache is backed by
some other storage to which writes are propagated along with writes to
to the cache. Unfortunately (or not?) JCache uses write-through term
while Ignite supports write-behind write propagation policy. Perhaps
API is not clear enough but I think that JCache conformance is the
clue here.

[1] https://static.javadoc.io/javax.cache/cache-api/1.1.0/javax/cache/configuration/MutableConfiguration.html#setWriteThrough-boolean-

вт, 5 мар. 2019 г. в 16:59, relax ken <[hidden email]>:

>
> Thanks Ilya. I guess conceptually there are many explanations and definitions about those two on Internet which may agree, disagree, or consensus on some point. My question is more about their impact when they are true or false in Ignite.
>
> For example, if it's always the case, why doesn't Ignite just encapsulate this kind assumption, take care it and auto set write through true while write behind is set to true. Why does Ignite give this kind of option and warning? Will there be any difference when write behind is true but write through is not true? try to understand deeper about those options to avoid any unexpected behaviour.
>
> On Tue, Mar 5, 2019 at 1:46 PM Ilya Kasnacheev <[hidden email]> wrote:
>>
>> Hello!
>>
>> It is because write-behing is a kind of write-through. Like random access memory is a kind of computer memory.
>>
>> Regards,
>> --
>> Ilya Kasnacheev
>>
>>
>> вт, 5 мар. 2019 г. в 14:43, relax ken <[hidden email]>:
>>>
>>> Hi,
>>>
>>> I am new to Ignite. When I enable write behind, I always get a warning "Write-behind mode for the cache store also requires CacheConfiguration.setWriteThrough(true) property." Why does write behind require write through when I am using write behind only?
>>>
>>> Here is my configuration
>>>
>>> CacheConfiguration<String, Document> cconfig = new CacheConfiguration<>();
>>> cconfig.setAtomicityMode(CacheAtomicityMode.ATOMIC);
>>> cconfig.setCacheMode(CacheMode.PARTITIONED);
>>> cconfig.setName(Constants.DocCacheName);
>>> cconfig.setExpiryPolicyFactory(TouchedExpiryPolicy.factoryOf(new Duration(TimeUnit.SECONDS, cacheConfig.cacheExpirySecs)));
>>>
>>> cconfig.setWriteBehindEnabled(true);
>>> cconfig.setWriteBehindFlushFrequency(cacheConfig.writeBehindFlushIntervalSec); // MS
>>>
>>>
>>> Thanks
>>>
>>> Ken



--
Best regards,
Ivan Pavlukhin
relax ken relax ken
Reply | Threaded
Open this post in threaded view
|

Re: Why does write behind require to enable write through?

Thanks! Very helpful! That is all I wanted to know

On Fri, 8 Mar 2019, 09:04 Павлухин Иван, <[hidden email]> wrote:
Hi,

Ignite CacheConfiguration inherits setWriteThrough method from JCache
API [1]. Enabled writeThrough in JCache means that cache is backed by
some other storage to which writes are propagated along with writes to
to the cache. Unfortunately (or not?) JCache uses write-through term
while Ignite supports write-behind write propagation policy. Perhaps
API is not clear enough but I think that JCache conformance is the
clue here.

[1] https://static.javadoc.io/javax.cache/cache-api/1.1.0/javax/cache/configuration/MutableConfiguration.html#setWriteThrough-boolean-

вт, 5 мар. 2019 г. в 16:59, relax ken <[hidden email]>:
>
> Thanks Ilya. I guess conceptually there are many explanations and definitions about those two on Internet which may agree, disagree, or consensus on some point. My question is more about their impact when they are true or false in Ignite.
>
> For example, if it's always the case, why doesn't Ignite just encapsulate this kind assumption, take care it and auto set write through true while write behind is set to true. Why does Ignite give this kind of option and warning? Will there be any difference when write behind is true but write through is not true? try to understand deeper about those options to avoid any unexpected behaviour.
>
> On Tue, Mar 5, 2019 at 1:46 PM Ilya Kasnacheev <[hidden email]> wrote:
>>
>> Hello!
>>
>> It is because write-behing is a kind of write-through. Like random access memory is a kind of computer memory.
>>
>> Regards,
>> --
>> Ilya Kasnacheev
>>
>>
>> вт, 5 мар. 2019 г. в 14:43, relax ken <[hidden email]>:
>>>
>>> Hi,
>>>
>>> I am new to Ignite. When I enable write behind, I always get a warning "Write-behind mode for the cache store also requires CacheConfiguration.setWriteThrough(true) property." Why does write behind require write through when I am using write behind only?
>>>
>>> Here is my configuration
>>>
>>> CacheConfiguration<String, Document> cconfig = new CacheConfiguration<>();
>>> cconfig.setAtomicityMode(CacheAtomicityMode.ATOMIC);
>>> cconfig.setCacheMode(CacheMode.PARTITIONED);
>>> cconfig.setName(Constants.DocCacheName);
>>> cconfig.setExpiryPolicyFactory(TouchedExpiryPolicy.factoryOf(new Duration(TimeUnit.SECONDS, cacheConfig.cacheExpirySecs)));
>>>
>>> cconfig.setWriteBehindEnabled(true);
>>> cconfig.setWriteBehindFlushFrequency(cacheConfig.writeBehindFlushIntervalSec); // MS
>>>
>>>
>>> Thanks
>>>
>>> Ken



--
Best regards,
Ivan Pavlukhin