Hi Kotamrajuyashasvi,

Could you please create a ticket for this in Ignite JIRA? That's the
standard process to make improvements/fixes to Ignite.

Thanks,
Igor Rudyak

On Mon, Jun 11, 2018 at 11:36 PM, kotamrajuyashasvi <
kotamrajuyasha...@gmail.com> wrote:

> Hi
>
> We are working on an Ignite project with Cassandra as persistent storage.
> During our tests we faced the continuous cassandra session refresh issue.
> https://issues.apache.org/jira/browse/IGNITE-8354
>
> When we observed the above issue we also ran into OutOfMemory Exception.
> Though the above issue is solved we ran through the source code to find out
> the root cause
> of OOM. We found one potential cause.
>
> In org.apache.ignite.cache.store.cassandra.session.
> CassandraSessionImpl.java
> when refresh() method is invoked to handle Exceptions, new Cluster is build
> with same LoadBalancingPolicy Object. We are using RoundRobinPolicy so same
> RoundRobinPolicy object would be used while building Cluster when refresh()
> is invoked. In RoundRobinPolicy there is a CopyOnWriteArrayList<Host>
> liveHosts. When ever init(Cluster cluster, Collection<Host> hosts) is
> called
> on RoundRobinPolicy  it calls liveHosts.addAll(hosts) adding all the Host
> Object Collection to liveHosts.
> When ever Cluster is build during refresh() the Host Collection are added
> again to the liveHosts of the same RoundRobinPolicy that is used. Thus same
> Hosts are added again to liveHosts for every refresh() and the size would
> grow indefinitely after many refresh() calls causing OOM. Even in the heap
> dump post OOM we found huge number of Objects in liveHosts of
> RoundRobinPolicy Object.
>
> IGNITE-8354 has fixed the OOM by preventing unnecessary refresh() but still
> does not fix the actual Memory leak caused due to RoundRobinPolicy . In a
> long run we can have many Cassandra refresh due to some genuine reasons and
> then we end up with many Hosts in liveHosts of the RoundRobinPolicy Object.
> Some possible solutions would be
> 1. To use new LoadBalancingPolicy object while building new Cluster during
> refresh().
> 2. Somehow clear Objects in liveHosts during refresh().
>
> Also there's a work around to use DCAwareRoundRobinPolicy as it uses adds
> hosts dc wise and adds only if absent. But we are using single datacenter
> and its not recommended to use DCAwareRoundRobinPolicy when we have single
> datacenter.
>
> I would like to request some one from ignite cassandra module development
> look into this issue.
>
>
>
> --
> Sent from: http://apache-ignite-developers.2346864.n4.nabble.com/
>

Reply via email to