[
https://issues.apache.org/jira/browse/CASSANDRA-18622?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Brandon Williams updated CASSANDRA-18622:
-----------------------------------------
Bug Category: Parent values: Correctness(12982)Level 1 values: API /
Semantic Implementation(12988)
Complexity: Normal
Component/s: Legacy/Core
Discovered By: User Report
Fix Version/s: 5.x
Severity: Normal
Status: Open (was: Triage Needed)
> StorageService throws inconsistent exceptions for unknown hosts
> ---------------------------------------------------------------
>
> Key: CASSANDRA-18622
> URL: https://issues.apache.org/jira/browse/CASSANDRA-18622
> Project: Cassandra
> Issue Type: Bug
> Components: Legacy/Core
> Reporter: Hao Zhong
> Priority: Normal
> Fix For: 5.x
>
>
> When hosts are unknown, StorageService throws two types of exceptions. The
> following methods throw RuntimeException:
>
> {code:java}
> public String getNativeaddress(InetAddressAndPort endpoint, boolean
> withPort){
> ...
> try{
> InetAddressAndPort address =
> InetAddressAndPort.getByName(Gossiper.instance.getEndpointStateForEndpoint(endpoint).getApplicationState(ApplicationState.NATIVE_ADDRESS_AND_PORT).value);
>
> return address.getHostAddress(withPort);
> }catch (UnknownHostException e) {
> throw new RuntimeException(e);
> }
> }{code}
> {code:java}
> public void onChange(InetAddressAndPort endpoint, ApplicationState state,
> VersionedValue value){
> ...
> try {
> InetAddressAndPort address = InetAddressAndPort.getByName(value.value);
> SystemKeyspace.updatePeerNativeAddress(endpoint, address);
> } catch (UnknownHostException e)
> {
> throw new RuntimeException(e);
> }
> ...
> }
> {code}
> A method throws IllegalArgumentException
> {code:java}
> public void rebuild(String sourceDc, String keyspace, String tokens, String
> specificSources, boolean excludeLocalDatacenterNodes){
> ...
> try { InetAddressAndPort
> endpoint = InetAddressAndPort.getByName(stringHost);
> if (FBUtilities.getBroadcastAddressAndPort().equals(endpoint))
> { throw new
> IllegalArgumentException("This host was specified as a source for rebuilding.
> Sources for a rebuild can only be other nodes in the cluster.");
> } sources.add(endpoint);
> } catch (UnknownHostException ex)
> { throw new
> IllegalArgumentException("Unknown host specified " + stringHost, ex);
> }
> } {code}
> A method throws no exceptions:
> {code:java}
> private void handleStateBootreplacing(InetAddressAndPort newNode, String[]
> pieces){
> ...
> try {
> oldNode = InetAddressAndPort.getByName(pieces[1]);
> } catch (Exception e) {
> logger.error("Node {} tried to replace malformed endpoint {}.", newNode,
> pieces[1], e);
> return;
> }
> ...
> } {code}
> A method does not rethrow exceptions and throws
> {color:#000000}UnknownHostException{color}
> {code:java}
> public List<String> getTokens(String endpoint) throws UnknownHostException
> { return getTokens(InetAddressAndPort.getByName(endpoint)); }
> {code}
> {color:#000000}The treatments look random. {color}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]