Re: Streamer and data loss

2020-01-15 Thread Saikat Maitra
Hi,

To minimise data loss during streamer node failure I think we can use the
following steps:

1. Use autoFlushFrequency param to set the desired flush frequency,
depending on desired consistency level and performance you can choose how
frequently you would like the data to be flush to Ignite nodes.

2. Develop a automated checkpointing process to capture and store the
source data offset, it can be something like kafka message offset or cache
keys if keys are sequential or timestamp for last flush and depending on
that the Ignite client can restart the data streaming process from last
checkpoint if there are node failure.

HTH

Regards,
Saikat

On Fri, Jan 10, 2020 at 4:34 AM narges saleh  wrote:

> Thanks Saikat for the feedback.
>
> But if I use the overwrite option set to true to avoid duplicates in case
> I have to resend the entire payload in case of a streamer node failure,
> then I won't
>  get optimal performance, right?
> What's the best practice for dealing with data streamer node failures? Are
> there examples?
>
> On Thu, Jan 9, 2020 at 9:12 PM Saikat Maitra 
> wrote:
>
>> Hi,
>>
>> AFAIK, the DataStreamer check for presence of key and if it is present in
>> the cache then it does not allow overwrite of value if allowOverwrite is
>> set to false.
>>
>> Regards,
>> Saikat
>>
>> On Thu, Jan 9, 2020 at 6:04 AM narges saleh  wrote:
>>
>>> Thanks Andrei.
>>>
>>> If the external data source client sending batches of 2-3 MB say via TCP
>>> socket connection to a bunch of socket streamers (deployed as ignite
>>> services deployed to each ignite node) and say of the streamer nodes die,
>>> the data source client catching the exception, has to check the cache to
>>> see how much of the 2-4MB batch has been flushed to cache and resend the
>>> rest? Would setting streamer with overwrite set to true work, if the data
>>> source client resend the entire batch?
>>> A question regarding streamer with overwrite option set to true. How
>>> does the streamer compare the content the data in hand with the data in
>>> cache, if each record is being assigned UUID when being  inserted to cache?
>>>
>>>
>>> On Tue, Jan 7, 2020 at 4:40 AM Andrei Aleksandrov <
>>> aealexsand...@gmail.com> wrote:
>>>
 Hi,

 Not flushed data in a data streamer will be lost. Data streamer works
 thought some Ignite node and in case if this the node failed it can't
 somehow start working with another one. So your application should
 think
 about how to track that all data was loaded (wait for completion of
 loading, catch the exceptions, check the cache sizes, etc) and use
 another client for data loading in case if previous one was failed.

 BR,
 Andrei

 1/6/2020 2:37 AM, narges saleh пишет:
 > Hi All,
 >
 > Another question regarding ignite's streamer.
 > What happens to the data if the streamer node crashes before the
 > buffer's content is flushed to the cache? Is the client responsible
 > for making sure the data is persisted or ignite redirects the data to
 > another node's streamer?
 >
 > thanks.

>>>


Re: Cache entries expiring in pageEvictionMode=DISABLED

2020-01-15 Thread akorensh
Hi,

Are you not seeing cache entries and therefore making the assumption that
eviction has kicked in?
You could inadvertently be using a different config w/persistence turned on?

search in ignite logs for the words "persistenceEnabled=false"

 
If you've not enabled onHeapCaching or persistence, and page eviction is
disabled and no memory is left, Ignite will throw
IgniteOutOfMemoryException.

docs for your version: https://apacheignite.readme.io/v2.3/docs/evictions

Can you try with only one cache(NonEvictable_256MB_Region) and see whether
the problem repeats itself?

Also, you have an old version, and if possible, can you do a small test
using a newer version(2.7.6) https://ignite.apache.org/download.cgi  and see
whether the behavior repeats itself.

If you are able to reproduce this on 2.7.6, then send us your entire config,
a reproducer project (or the code that you use to populate the cache) and we
will take a look.

Thanks, Alex



--
Sent from: http://apache-ignite-users.70518.x6.nabble.com/


Cache entries expiring in pageEvictionMode=DISABLED

2020-01-15 Thread mzingman
I'm running 3 container instances of ignite fabric 2.3.0. Below is my
datastorageconfiguration:


































Here's the snippet of the cacheConfig for the cache using my non-evictable
data region:
 




   



      


After a while, when entries in the main region cache probably get filled
(0.9 threshhold), I'm starting seeing non-evictable cache entries also
getting evicted. What's worse - they are evicted on one node, and eviction
is not propagated on the other two nodes (so now every node has different
count of entries for that cache, even though it's replicated). So eviction
is not even working properly.
Please help!





--
Sent from: http://apache-ignite-users.70518.x6.nabble.com/


Re: Failed to reinitialize local partitions (rebalancing will be stopped)

2020-01-15 Thread Ilya Kasnacheev
Hello!

Actually, it turns out you needn't file a ticket, rather you should fix
your data region configuration, as seen when your reproducer is ran against
2.8 builds:
Caused by: org.apache.ignite.spi.IgniteSpiException: Failed to join node
(Incompatible data region configuration [region=Data_Region,
locNodeId=fd66182a-89a6-4443-8f5e-2fba7d4ad36b, isPersistenceEnabled=true,
rmtNodeId=16825cee-57cf-454e-94ce-46daad4f6b93, isPersistenceEnabled=false])

You should not have data regions with same name but different persistence
flag settings in your cluster, it turns out.

This is due to https://issues.apache.org/jira/browse/IGNITE-10983

Regards,
-- 
Ilya Kasnacheev


ср, 15 янв. 2020 г. в 09:51, ashishb888 :

> Hello Ilya,
>
> Okay, will file a ticket.
>
> BR
> Ashish
>
>
>
> --
> Sent from: http://apache-ignite-users.70518.x6.nabble.com/
>


Re: JDBC Connectivity

2020-01-15 Thread Ilya Kasnacheev
Hello!

4) I actually think that if you specify caches in thick client's config
file, and they are absent on server, they will be created.

(However, they will not be changed if configuration differs)

Regards,
-- 
Ilya Kasnacheev


ср, 15 янв. 2020 г. в 15:59, narges saleh :

> Hi All,
>
> I am trying to use ignite's cache grid with native persistence and prefer
> to use JDBC for cache/db connectivity.
>
> 1) Is this possible, in either client or server mode?
> 2) If yes, I assume, I'd need one JDBC connection per cache, as I see it
> is possible to specify only one cache per JDBC connection. Is this right?
> 3) Is this also true if I need to join multiple tables/caches?
> 4) Can I specify my caches in XML config file and just pass the config
> file to the JDBC connection?
> 5) Will I get the same load performance if I JDBC with streaming set to
> true as I'd using the streamer module directly (I see that I can specify
> most of the streamer config options on JDBC connection configuration)?
>
> thanks.
>


Re: JDBC Connectivity

2020-01-15 Thread Stephen Darlington
> 1) Is this possible, in either client or server mode?

Yes.

> 2) If yes, I assume, I'd need one JDBC connection per cache, as I see it is 
> possible to specify only one cache per JDBC connection. Is this right?

No. You can access any cache that has SQL enabled as long as you fully qualify 
it.

> 3) Is this also true if I need to join multiple tables/caches?

See above.

> 4) Can I specify my caches in XML config file and just pass the config file 
> to the JDBC connection?

If you use the thin JDBC driver, you just need a host name and port. For a 
thick client you wouldn’t need to specify the caches in the XML file (though if 
they’re in there it won’t be a problem).

> 5) Will I get the same load performance if I JDBC with streaming set to true 
> as I'd using the streamer module directly (I see that I can specify most of 
> the streamer config options on JDBC connection configuration)?

You mean the IgniteDataStreamer? If so, no. At the very least, it has to parse 
the SQL which the data streamer doesn’t have to do.

Regards,
Stephen



JDBC Connectivity

2020-01-15 Thread narges saleh
Hi All,

I am trying to use ignite's cache grid with native persistence and prefer
to use JDBC for cache/db connectivity.

1) Is this possible, in either client or server mode?
2) If yes, I assume, I'd need one JDBC connection per cache, as I see it is
possible to specify only one cache per JDBC connection. Is this right?
3) Is this also true if I need to join multiple tables/caches?
4) Can I specify my caches in XML config file and just pass the config file
to the JDBC connection?
5) Will I get the same load performance if I JDBC with streaming set to
true as I'd using the streamer module directly (I see that I can specify
most of the streamer config options on JDBC connection configuration)?

thanks.