Bug 1261147 - hostname regex fails in update-cluster in some locales
hostname regex fails in update-cluster in some locales
Product: OpenShift Online
Classification: Red Hat
Component: Image (Show other bugs)
Unspecified Unspecified
unspecified Severity unspecified
: ---
: ---
Assigned To: John W. Lamb
DeShuai Ma
: UpcomingRelease
Depends On:
Blocks: 1277547 1277695
  Show dependency treegraph
Reported: 2015-09-08 13:25 EDT by Andy Grimm
Modified: 2016-11-07 22:48 EST (History)
5 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
: 1277695 (view as bug list)
Last Closed: 2016-01-29 11:23:41 EST
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)

  None (edit)
Description Andy Grimm 2015-09-08 13:25:19 EDT
Description of problem:

If a user sets the LC_ALL environment variable to certain locales, such as et_EE, then the 'alphanumeric' range [a-zA-Z0-9] does not function correctly.  One place where this causes a problem is in a scaled app, where update-cluster checks a host:port combination against this regex:


since our domain is "rhcloud.com", and in Estonian the letter "u" falls outside of a-z, all attempts to move the gear or scale the app will fail with an error like:

September 08 13:02:57 INFO [app_uuid=REDACTED] openshift-agent: request end: action=cartridge_do, requestid=9cb59dcbb3c75f6c98b5c0b64c3bb957, senderid=mcollect.cloud.redhat.com, statuscode=1, data={:time=>nil, :output=>"CLIENT_ERROR: Failed to execute: 'control update-cluster' for /var/lib/openshift/REDACTED/haproxy\nWeb/Proxy gears ratio 1\nNo disabling required\n\nAPPNAME-DOMAIN.rhcloud.com|ex-std-node746.prod.rhcloud.com:42676 - Invalid endpoint 'ex-std-node746.prod.rhcloud.com:42676' passed in input - APPNAME-DOMAIN.rhcloud.com|ex-std-node746.prod.rhcloud.com:42676\n", :exitcode=>22, :addtl_params=>nil}

Version-Release number of selected component (if applicable):

How reproducible:

Steps to Reproduce:
1. Create a scaled app
2. Use "rhc setenv" to set LANG and LC_ALL to et_EE.utf8
3. Attempt to scale up the app or move the gear.

Actual results:
update-cluster will fail with the message in the description

Expected results:
update-cluster should succeed

Additional info:

I was able to work around this issue by changing the regex to:


However, Luke Meyer brought up a good point that this is not really the right check, because we really only support hostnames which match ASCII letters and numbers.  The right solution is probably to set LC_ALL=C or en_US somewhere in the scripts.
Comment 1 John W. Lamb 2015-10-20 17:21:42 EDT
This is very similar to this bug:

It should probably be fixed in a similar manner:

  LANG=en_US.UTF.8 if [[ ! $ep =~ <long regex> ]] ; then

I'll test this out in the next day or two.
Comment 3 openshift-github-bot 2015-10-22 15:47:19 EDT
Commit pushed to master at https://github.com/openshift/origin-server

haproxy: use POSIX locale for validating endpoints

Bug 1261147
Bugzilla link <https://bugzilla.redhat.com/show_bug.cgi?id=1261147>

Different locales have different ideas of what `[a-z]` mean in a
regex. The regex used for endpoint validation in `update-cluster`
depends on the `POSIX` locale being set. Users that want to control the
locale their apps run in by setting `LC_ALL` to some non-`POSIX`
locale via `rhc set-env LC_ALL=xyz` (e.g. Estonian - `ee_ET`) would find
that scaling events might fail because `[a-z]` in the new locale
excludes some letters that might appear in a valid hostname.

This change updates the `update-cluster` script in the `haproxy`
cartridge so that it preserves the user's locale setting and switches to
the `POSIX` locale only for the part of the script that does the
endpoint validation.

See also:
 * <https://bugzilla.redhat.com/show_bug.cgi?id=1056666>
Comment 4 Andy Grimm 2016-01-29 11:23:41 EST
This was already released.

Note You need to log in before you can comment on or make changes to this bug.