[ https://issues.apache.org/jira/browse/IGNITE-22088?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Igor resolved IGNITE-22088. --------------------------- Resolution: Not A Bug >From the doc: _Sets the retry policy. When a request fails due to a connection error, and multiple server connections are available, Ignite will retry the request if the specified policy allows it._ > retryPolicy of IgniteClient doesn't work on transaction fail > ------------------------------------------------------------ > > Key: IGNITE-22088 > URL: https://issues.apache.org/jira/browse/IGNITE-22088 > Project: Ignite > Issue Type: Bug > Components: clients, thin client > Affects Versions: 3.0.0-beta1 > Reporter: Igor > Priority: Major > Labels: ignite-3 > > *Details:* > IgniteClient do not run retry with set retryPolicy on transaction lock. The > default retry policy also doesn't work. The debugging also shows that no any > code inside `RetryReadPolicy` is not used during transaction lock exception. > *Steps to reproduce:* > Run the next code: > {code:java} > AtomicInteger retriesCount = new AtomicInteger(0); > RetryReadPolicy retry = new RetryReadPolicy() { > @Override > public boolean shouldRetry(RetryPolicyContext context) { > System.out.println("CHECK IF RETRY SHOULD HAPPEN"); > retriesCount.addAndGet(1); > return super.shouldRetry(context); > } > }; > try (IgniteClient igniteClient1 = > IgniteClient.builder().retryPolicy(retry).addresses("localhost:10800").build(); > IgniteClient igniteClient2 = > IgniteClient.builder().retryPolicy(retry).addresses("localhost:10800").build()) > { > igniteClient1.sql().execute(null, "CREATE TABLE teachers(id INTEGER > PRIMARY KEY, name VARCHAR(200))"); > Transaction tr1 = igniteClient1.transactions().begin(); > Transaction tr2 = igniteClient2.transactions().begin(); > igniteClient1.sql().execute(tr1, "INSERT INTO TEACHERS (id, name) VALUES > (" + 3 + ", '" + "Pavel" + "')"); > SqlException exception = assertThrows(SqlException.class, () -> > igniteClient2.sql().execute(tr2, "SELECT * FROM teachers")); > assertTrue(exception.getMessage().contains("Failed to acquire a lock due > to a possible deadlock ")); > } > assertEquals(16, retriesCount.get()); {code} > *Expected:* > Executed without errors. > *Actual:* > Fails on the last step expected 16 retries, actual 0. -- This message was sent by Atlassian Jira (v8.20.10#820010)