In ignite 2.7.5 I got following exception:

org.apache.ignite.IgniteException: Failed to create string representation of 
binary object.
        at 
org.apache.ignite.internal.util.tostring.GridToStringBuilder.toStringImpl(GridToStringBuilder.java:1022)
 ~[ignite-core-2.7.5.jar:2.7.5]
        at 
org.apache.ignite.internal.util.tostring.GridToStringBuilder.toString(GridToStringBuilder.java:762)
 ~[ignite-core-2.7.5.jar:2.7.5]
        at 
org.apache.ignite.internal.util.tostring.GridToStringBuilder.toString(GridToStringBuilder.java:710)
 ~[ignite-core-2.7.5.jar:2.7.5]
        at 
org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter.toString(IgniteTxLocalAdapter.java:1645)
 ~[ignite-core-2.7.5.jar:2.7.5]
        at 
org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxLocalAdapter.toString(GridDhtTxLocalAdapter.java:944)
 ~[ignite-core-2.7.5.jar:2.7.5]
        at 
org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxLocal.toString(GridDhtTxLocal.java:650)
 ~[ignite-core-2.7.5.jar:2.7.5]
        at java.lang.String.valueOf(String.java:2994) ~[?:1.8.0_222]
        at java.lang.StringBuilder.append(StringBuilder.java:131) ~[?:1.8.0_222]
        at 
org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter.userCommit(IgniteTxLocalAdapter.java:942)
 ~[ignite-core-2.7.5.jar:2.7.5]
        at 
org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxLocalAdapter.localFinish(GridDhtTxLocalAdapter.java:796)
 ~[ignite-core-2.7.5.jar:2.7.5]….

As I found in sources, it was error during handling of other error. So this 
error masks real problem. 
See 
org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter 
lines 934-944:

                    catch (Throwable ex) {
                        // We are about to initiate transaction rollback when 
tx has started to committing.
                        // Need to remove version from committed list.
                        cctx.tm().removeCommittedTx(this);

                        boolean isNodeStopping = X.hasCause(ex, 
NodeStoppingException.class);
                        boolean hasInvalidEnvironmentIssue = X.hasCause(ex, 
InvalidEnvironmentException.class);

                        IgniteCheckedException err0 = new 
IgniteTxHeuristicCheckedException("Failed to locally write to cache " +
                            "(all transaction entries will be invalidated, 
however there was a window when " +
                            "entries for this transaction were visible to 
others): " + this, ex);

Exception occurs during IgniteTxHeuristicCheckedException creation. So we got 
unhandled error and server halt instead of IgniteTxHeuristicCheckedException 
and rollback logic.

And the main issue: we lost any information about origin problem.

Andrey.

Reply via email to