You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ignite.apache.org by Alexander Ivanov <rs...@list.ru> on 2018/05/17 22:57:57 UTC

IGNITE-4985: Do not acquire asyncOp semaphore for retry operations and Maximum permit count exceeded on Semaphore in Ignite 2.3...

Hi!

Ignite 2.3, Maximum permit count exceeded on Semaphore...

GridCacheAdapter.commitTxAsync():

But saveFuture() don't call acquire, only release:


May be need *retry = true*?

Alexander





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

Re: IGNITE-4985: Do not acquire asyncOp semaphore for retry operations and Maximum permit count exceeded on Semaphore in Ignite 2.3...

Posted by Stanislav Lukyanov <st...@gmail.com>.
Please resend this to the Ignite developers list - dev@ignite.apache.org. The
discussions of code changes happen there.
user@ignite.apache.org is for more user-oriented questions.

Thanks,
Stan



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

Re: IGNITE-4985: Do not acquire asyncOp semaphore for retry operations and Maximum permit count exceeded on Semaphore in Ignite 2.3...

Posted by Alexander Ivanov <rs...@list.ru>.
Lost source codes...

    IgniteInternalFuture<IgniteInternalTx> commitTxAsync(final
GridNearTxLocal tx) {
        FutureHolder holder = lastFut.get();

        holder.lock();

        try {
            IgniteInternalFuture fut = holder.future();

            if (fut != null && !fut.isDone()) {
                IgniteInternalFuture<IgniteInternalTx> f = new
GridEmbeddedFuture<>(fut,
                    new C2<Object, Exception,
IgniteInternalFuture&lt;IgniteInternalTx>>() {
                        @Override public
IgniteInternalFuture<IgniteInternalTx> apply(Object o, Exception e) {
                            return tx.commitNearTxLocalAsync();
                        }
                    });

                saveFuture(holder, f, /*retry*/false);

                return f;
            }

            IgniteInternalFuture<IgniteInternalTx> f =
tx.commitNearTxLocalAsync();

            saveFuture(holder, f, /*retry*/false);

            ctx.tm().resetContext();

            return f;
        }
        finally {
            holder.unlock();
        }
    }

    protected final void asyncOpRelease(boolean retry) {
        if (!retry && asyncOpsSem != null)
            asyncOpsSem.release();
    }





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