You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@slider.apache.org by "Manoj Samel (JIRA)" <ji...@apache.org> on 2016/05/19 23:12:12 UTC
[jira] [Updated] (SLIDER-1124) If unparsable port range is
specified, Slider AM PortScanner.java setPortRange() should throw exception
- add else part
[ https://issues.apache.org/jira/browse/SLIDER-1124?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Manoj Samel updated SLIDER-1124:
--------------------------------
Summary: If unparsable port range is specified, Slider AM PortScanner.java setPortRange() should throw exception - add else part (was: If unparsable port range is specified, Slider AM PortScanner.java setPortRange() should throw exception)
> If unparsable port range is specified, Slider AM PortScanner.java setPortRange() should throw exception - add else part
> ------------------------------------------------------------------------------------------------------------------------
>
> Key: SLIDER-1124
> URL: https://issues.apache.org/jira/browse/SLIDER-1124
> Project: Slider
> Issue Type: Improvement
> Components: appmaster
> Affects Versions: Slider 0.80
> Reporter: Manoj Samel
>
> {noformat}
> The issue was discovered when a JSON was generated with IDE and instead of "-", it somehow inserted a similar looking but different character sequence. In this case, Slider AM fails to start with following ERROR
> [main] ERROR main.ServiceLauncher - No available ports found in configured range {}
> Above error gives a impression that all available ports in specified range were some how not available; which is not the case.
> Json was updated using IDE, and while at first glance it looks like "32201-33100", it was really "32201–33100" . The character in the second case is not a "-" but actually three characters that together appear somewhat like it (but its wider and lower than - ).
> So this is neither a "," separated list or "-" range as the code expects and it errors out.
> It would be useful if such "bad" range is caught up earlier with clearer message like invalid or unparsable port range specified.
> Looking at the code
> SliderAppMaster.java buildPortScanner() reads the key KEY_ALLOWED_PORT_RANGE and passes the associated value to portScanner.setPortRange().
> In PortScanner.java setPortRange() , it first tries to split on "," or else tries to split on "-". However, there is no "else" part if it does not finds the "-" pattern (which will happen in above case). Since there is no else part, there is no exception etc. thrown at this point and this.remainingPortsToCheck gets set to a empty set, resulting in more obscure error later in getAvailablePortViaPortArray().
> I think it would be good to have a "else" part added to range matchers below and a exception with input text thrown at that point - so the misconfigured value will be obvious
> Matcher m = SINGLE_NUMBER.matcher(range.trim());
> if (m.find()) {
> inputPorts.add(Integer.parseInt(m.group()));
> } else {
> m = NUMBER_RANGE.matcher(range.trim());
> if (m.find()) {
> } // else is missing ..... Add with a exception ???
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)