Dave Marion created ACCUMULO-4331:
-------------------------------------
Summary: Make port configuration and allocation consistent across
services
Key: ACCUMULO-4331
URL: https://issues.apache.org/jira/browse/ACCUMULO-4331
Project: Accumulo
Issue Type: Bug
Affects Versions: 1.8.0
Reporter: Dave Marion
Fix For: 1.8.0
There was some discussion in ACCUMULO-4328 about ports, so I decided to track
down how the client ports are configured and allocated. Issues raised in the
discussion were:
1. The port search feature was not well understood
2. Ephemeral port allocation makes it hard to lock servers down (e.g. iptables)
Looking through the code I found the following properties allocate a port
number based on conf.getPort(). This returns the port number based on the
property and supports either a single value or zero. Then, in the server
component (monitor, tracer, gc, etc) this value is used when creating a
ServerSocket. If the port is already in use, the process will fail.
{noformat}
monitor.port.log4j
trace.port.client
gc.port.client
monitor.port.client
{noformat}
The following properties use TServerUtils.startServer which uses the value in
the property to start the TServer. If the value is zero, then it picks a random
port between 1024 and 65535. If tserver.port.search is enabled, then it will
try a thousand times to bind to a random port.
{noformat}
tserver.port.client
master.port.client
master.replication.coordinator.port
replication.receipt.service.port
{noformat}
I'm proposing that we deprecate the tserver.port.search property and the value
zero in the property value for the properties above. Instead, I think we should
allow the user to specify a single value or a range (M-N).
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)