redpony/cdec

sentence server port bounding

Opened this issue · 2 comments

Problematic port binding happens in the sentence server module: it first tests if a port is available, and it tells that the port is available and immediately try to bind it, and then found the port to be unavilable...
I ran 3 decoder-and-eval.pl each has -j=2, i.e. 6 cdec running. It is not uncommon for this to happen with this number of job..

The relevant part of sentserver log file indicates:

Executing and gathering output: dirname /cdec-2013-11-10/training/utils/parallelize.pl
Executing and gathering output: hostname
Testing port 50576...port 50576 is available
Running: /cdec-2013-11-10/training/utils/sentserver -k 17723 50576
Executing: /cdec-2013-11-10/training/utils/sentserver -k 17723 50576
bind(): Address already in use
bind(): Address already in use
bind(): Address already in use
bind(): Address already in use
bind(): Address already in use
bind(): Address already in use

The reason could be during the very short time period between testing port and execute sentserver binary to actually do the binding, another cdec instance grabbed the port. However I suspect 6 jobs is not that crowded for the default 300 range for perl random number generator in parallel.pl...
But I constantly ran into this :/

Thanks in advance if you could fix that!

I pushed a change to parallelize that should help with this. Long term,
this needs to be fixed properly though. If you don't want to download the
newest version of cdec, you should just be able to copy the most recent
version of parallelize from github.
-C

On Wed, Jan 15, 2014 at 5:37 PM, Huiying notifications@github.com wrote:

Problematic port binding happens in the sentence server module: it first
tests if a port is available, and it tells that the port is available and
immediately try to bind it, and then found the port to be unavilable...
I ran 3 decoder-and-eval.pl each has -j=2, i.e. 6 cdec running. It is not
uncommon for this to happen with this number of job..

The relevant part of sentserver log file indicates:

Executing and gathering output: dirname /cdec-2013-11-10/training/utils/
parallelize.pl
Executing and gathering output: hostname
Testing port 50576...port 50576 is available
Running: /cdec-2013-11-10/training/utils/sentserver -k 17723 50576

Executing: /cdec-2013-11-10/training/utils/sentserver -k 17723 50576

bind(): Address already in use
bind(): Address already in use
bind(): Address already in use
bind(): Address already in use
bind(): Address already in use
bind(): Address already in use

The reason could be during the very short time period between testing port
and execute sentserver binary to actually do the binding, another cdec
instance grabbed the port. However I suspect 6 jobs is not that crowded for
the default 300 range for perl random number generator in parallel.pl...
But I constantly ran into this :/

Thanks in advance if you could fix that!


Reply to this email directly or view it on GitHubhttps://github.com//issues/38
.

Thank! Just finished a batch of test with 10 jobs running, they are working fine.