Salesforce

Cannot start proserve, procopy, prodb or prorest a database when hostname exceeds 28 characters on Linux

« Go Back

Information

 
TitleCannot start proserve, procopy, prodb or prorest a database when hostname exceeds 28 characters on Linux
URL NameP14670
Article Number000131687
EnvironmentProduct: Progress
Version: 7.x, 8.x, 9.x
Product: OpenEdge
Version: 10.x, 11.x
OS: Linux IBM POWER 64-bit, Linux x86 64-bit, Linux Intel
Question/Problem Description
Cannot start proserve, procopy, prodb or prorest a database when hostname exceeds 28 characters on Linux.
Database utilities fails on the machine with hostname greater than 28 characters on Linux
 
Steps to Reproduce
Clarifying Information
Database lk file is created after the failure.
lk file reapers if deleted.
Database lg file is not created.
prodb fails with error The file dbname.lk exists.
prorest fails with error The file dbname.lk exists
Creating a new database using the prodb fails
Creating a new database using the procopy fails
PASOE instance hostname fails when being started by Load Balance server.
Error Message** This process terminated with exit code 2. (8619)
This process terminated with exit code <number>. (8619)
The file DBname exists. This indicates one of: (528)
The database is in use by another user. (529)
The last session terminated abnormally. (530)
If you are CERTAIN the database is not in use by any user or server, (531)
simply erase DBname.lk and try again. (532)
Defect NumberDefect PSC00190453, PSC00333755
Enhancement Number
Cause
Issue ID: PSC00190453

The hostname on Linux is limited to 255 bytes.  Progress uses a C function called "gethostname" to determine a UNIX machine"s hostname. If the hostname is longer than 28 characters Linux returns a null string to Progress, as opposed to a truncated name. The gethostname function returns the correct hostname value, however the return code is a -1 which means that the gethostname function failed.  The -1 return code results in Progress setting the hostname in the .lk file to nulls rather than the value returned by the gethostname function. Since a null string is returned in the low level functions, this is part of the reason for the remaining .lk files and in some instances, zombie shared-memory segments pids have been known to occur.

Issue ID: PSC00333755  

If the concatenation of (kernel name, nodename, release, version, and machine (uname --snrvm)) is >76 bytes, a stack overflow will happen and cause database not to start.
 
Resolution
For issue:  PSC00190453, upgrade to 10.2B07 or later or 11.1.0.0 or later.

For issue:  PSC00333755, upgrade to OpenEdge 11.5 or later.

Changes were made in  OpenEdge 11.5 where the total buffer length for machine information was increased to 162 bytes, and a secure function used to avoid stack overflow.
For OpenEdge 10.2B08, please contact Progress Technical Support for the latest hotfix for this issue only if splitting the hostname in /etc/sysconfig/network is really not a viable workaround as described below.
Workaround
Workaround 1. Split the hostname in /etc/sysconfig/network
....
HOSTNAME=the_actual_short_name_only_here
DNSDOMAIN=the.actual.domain.here

Workaround 2. Change the name of the server.

This operation will require:
  • First shutting down running databases, otherwise they will crash. Refer to Article  Error (4192) causes database to be shutdown. Machines hostname was changed.   
  • The full hostname must be less or equal to 28 characters on Linux. 
  • To determine the length of the current hostname, run the 'hostname | wc -m' command at the shell prompt.
  • To change the name of the Linux hostname, type 'hostname <newhostname>' (where <newhostname> is 28 characters or less).
  • An alias (for the long) hostname can be created in /etc/hosts or "yphosts" (if NIS is used).
This operation will require ROOT permission.
Notes
Keyword Phrase
Last Modified Date9/14/2021 8:22 PM

Powered by