Skip to content

Commit 9431925

Browse files
committed
update
1 parent 8821331 commit 9431925

File tree

3 files changed

+27
-8
lines changed

3 files changed

+27
-8
lines changed

driver/src/main/java/org/neo4j/driver/internal/adaptedbolt/ErrorMapper.java

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
*/
1717
package org.neo4j.driver.internal.adaptedbolt;
1818

19+
import java.util.Arrays;
1920
import java.util.Map;
2021
import java.util.concurrent.CompletionException;
2122
import javax.net.ssl.SSLHandshakeException;
@@ -25,6 +26,7 @@
2526
import org.neo4j.driver.exceptions.ClientException;
2627
import org.neo4j.driver.exceptions.ConnectionReadTimeoutException;
2728
import org.neo4j.driver.exceptions.DatabaseException;
29+
import org.neo4j.driver.exceptions.DiscoveryException;
2830
import org.neo4j.driver.exceptions.FatalDiscoveryException;
2931
import org.neo4j.driver.exceptions.Neo4jException;
3032
import org.neo4j.driver.exceptions.ProtocolException;
@@ -40,6 +42,7 @@
4042
import org.neo4j.driver.internal.bolt.api.exception.BoltClientException;
4143
import org.neo4j.driver.internal.bolt.api.exception.BoltConnectionAcquisitionException;
4244
import org.neo4j.driver.internal.bolt.api.exception.BoltConnectionReadTimeoutException;
45+
import org.neo4j.driver.internal.bolt.api.exception.BoltDiscoveryException;
4346
import org.neo4j.driver.internal.bolt.api.exception.BoltFailureException;
4447
import org.neo4j.driver.internal.bolt.api.exception.BoltGqlErrorException;
4548
import org.neo4j.driver.internal.bolt.api.exception.BoltProtocolException;
@@ -174,8 +177,24 @@ protected Throwable mapGqlCause(BoltGqlErrorException boltGqlErrorException) {
174177
}
175178

176179
protected Throwable mapServiceUnavailable(BoltServiceUnavailableException boltServiceUnavailableException) {
177-
return new ServiceUnavailableException(
178-
boltServiceUnavailableException.getMessage(), boltServiceUnavailableException);
180+
var e = Arrays.stream(boltServiceUnavailableException.getSuppressed())
181+
.map(throwable -> {
182+
if (throwable instanceof BoltDiscoveryException boltDiscoveryException) {
183+
return new DiscoveryException(boltDiscoveryException.getMessage(), boltDiscoveryException);
184+
} else {
185+
return null;
186+
}
187+
})
188+
.toList();
189+
190+
if (e.isEmpty()) {
191+
return new ServiceUnavailableException(
192+
boltServiceUnavailableException.getMessage(), boltServiceUnavailableException);
193+
} else {
194+
var ex = new ServiceUnavailableException(boltServiceUnavailableException.getMessage());
195+
e.forEach(ex::addSuppressed);
196+
return ex;
197+
}
179198
}
180199

181200
private static String extractErrorClass(String code) {

driver/src/main/java/org/neo4j/driver/internal/bolt/routedimpl/DiscoveryException.java renamed to driver/src/main/java/org/neo4j/driver/internal/bolt/api/exception/BoltDiscoveryException.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,15 @@
1414
* See the License for the specific language governing permissions and
1515
* limitations under the License.
1616
*/
17-
package org.neo4j.driver.internal.bolt.routedimpl;
17+
package org.neo4j.driver.internal.bolt.api.exception;
1818

1919
import java.io.Serial;
2020

21-
public class DiscoveryException extends Exception {
21+
public class BoltDiscoveryException extends BoltException {
2222
@Serial
23-
private static final long serialVersionUID = -668036174842016259L;
23+
private static final long serialVersionUID = -177641311561760099L;
2424

25-
public DiscoveryException(String message, Throwable cause) {
25+
public BoltDiscoveryException(String message, Throwable cause) {
2626
super(message, cause);
2727
}
2828
}

driver/src/main/java/org/neo4j/driver/internal/bolt/routedimpl/cluster/RediscoveryImpl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,14 +46,14 @@
4646
import org.neo4j.driver.internal.bolt.api.LoggingProvider;
4747
import org.neo4j.driver.internal.bolt.api.ResponseHandler;
4848
import org.neo4j.driver.internal.bolt.api.SecurityPlan;
49+
import org.neo4j.driver.internal.bolt.api.exception.BoltDiscoveryException;
4950
import org.neo4j.driver.internal.bolt.api.exception.BoltFailureException;
5051
import org.neo4j.driver.internal.bolt.api.exception.BoltProtocolException;
5152
import org.neo4j.driver.internal.bolt.api.exception.BoltServiceUnavailableException;
5253
import org.neo4j.driver.internal.bolt.api.exception.BoltUnsupportedFeatureException;
5354
import org.neo4j.driver.internal.bolt.api.exception.MinVersionAcquisitionException;
5455
import org.neo4j.driver.internal.bolt.api.summary.RouteSummary;
5556
import org.neo4j.driver.internal.bolt.routedimpl.AuthTokenManagerExecutionException;
56-
import org.neo4j.driver.internal.bolt.routedimpl.DiscoveryException;
5757
import org.neo4j.driver.internal.bolt.routedimpl.util.FutureUtil;
5858

5959
public class RediscoveryImpl implements Rediscovery {
@@ -439,7 +439,7 @@ private ClusterComposition handleRoutingProcedureError(
439439
}
440440

441441
// Retryable error happened during discovery.
442-
var discoveryError = new DiscoveryException(format(RECOVERABLE_ROUTING_ERROR, routerAddress), error);
442+
var discoveryError = new BoltDiscoveryException(format(RECOVERABLE_ROUTING_ERROR, routerAddress), error);
443443
FutureUtil.combineErrors(baseError, discoveryError); // we record each failure here
444444
log.log(System.Logger.Level.WARNING, RECOVERABLE_DISCOVERY_ERROR_WITH_SERVER, routerAddress);
445445
log.log(

0 commit comments

Comments
 (0)