Hi,

You have 2 nodes and Partitioned index with 1 backup and both nodes should
have full dataset.
So, when a new node is added Ignite will copy data to the new node and no
partitions will be evicted.

IndexingSpi#remove() method is called only when entry removed from node
(either deleted from cache or due to partition eviction)
and it is ok IndexingSpi#store() is called for primary and backups keys.

You can inject Ignite instance into your IndexingSpi implementation
via @IgniteInstanceResource annotation
and use ignite.affinity() information to check if node is primary or backup
for key.


On Tue, Jan 30, 2018 at 7:49 PM, zbyszek <zbab...@yahoo.com> wrote:

>
> I am testing IndexingSpi in cluster of 2 nodes for the the following cache
> config:
>
> private IgniteCache<String, BinaryObject> createCache() {
>         CacheConfiguration<String, BinaryObject> cCfg = new
> CacheConfiguration<>();
>         cCfg.setName("MyCache");
>         cCfg.setStoreKeepBinary(true);
>         cCfg.setCacheMode(CacheMode.PARTITIONED);
>         cCfg.setOnheapCacheEnabled(false);
>         cCfg.setCopyOnRead(false);
>         cCfg.setBackups(1);
>         cCfg.setWriteBehindEnabled(false);
>         cCfg.setReadThrough(false);
>         return ignite.getOrCreateCache(cCfg).withKeepBinary();
> }
>
> I have observed that method org.apache.ignite.spi.
> indexing.IndexingSpi#store
> is called for all keys, both primay and backup,
> resulting in both nodes having built duplicated index. In addition,
> org.apache.ignite.spi.indexing.IndexingSpi#remove is not called when the
> keys migrate to another node (for example due to second node joining the
> cluster).
> Is that by design or rather a bug? I would expect the receive remove()
> callback when primary keys migrate from the node, so I can free resources
> occupied by corresponding index.
>
> Thank you in advance for your help,
> zbyszek
>
>
>
>
> --
> Sent from: http://apache-ignite-users.70518.x6.nabble.com/
>



-- 
Best regards,
Andrey V. Mashenkov

Reply via email to