Consultor Eletrônico



Kbase P160681: What are the possible causes of error 9908
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   2/24/2010
Status: Unverified

GOAL:

What are the possible causes of error 9908

GOAL:

How to diagnose the cause of error 9908

GOAL:

How to verify if the Operating System time and the internal time of the Java process of the AdminServer are on sync

GOAL:

How to verify if java process has internal time discrepancies using SysTime.java

GOAL:

<user,time> System generated password has expired (9908)

FACT(s) (Environment):

All Supported Operating Systems
Progress/OpenEdge Versions

FIX:

There are 2 known causes for this error 9908. One is generic, the other is specific to HP-UX.

The specific problem is a bug on HP-UX which causes java to have a loss in time the longer a java process runs.

To avoid this java bug, for OpenEdge versions earlier than 10.0A, add the following HP-UX java switch as a parameter of JVMARGS for the AdminServer and all scripts which issue commands which communicate with the AdminServer such as dbman, asbman, wtbman, etc.

-XX:+UseGetTimeOfDay

to the $DLC/bin/java_env file under the relevant HP-UX section:

Example:
"HP-UX") # HP UNIX 11.00, No jdk but jre
THREADS_FLAG=native_threads
JVMARGS="-mx256m -ms128m -XX:+UseGetTimeOfDay ${JVMARGS}" ## (or -Xmx256m -Xms128m for Java 1.4 and above)
JDKHOME=
if [ ! -f $JDKHOME/bin/javac ]
then
JDKHOME=$env_jdkhome
fi
JDKCP=$JDKHOME/lib/tools.jar
JRECP=
VMTYPE=classic
ARCH=PA_RISC
# set the shared library search path - snippet from the java script
SHLIB_PATH=$SHLIB_PATH:$JREHOME/lib/$ARCH/$THREADS_FLAG:$JREHOME/lib/$ARCH
/$VMTYPE:$JREHOME/lib/$ARCH
export SHLIB_PATH

On HP-UX for OpenEdge 10.0A and later this change needs to be on the AdminServerPlugins.properties file located in the $DLC/properties directory.
Look for the section:
[PluginPolicy.Progress.AdminServer]

and modify the value of the jvmargs to include the additional parameter as follow:

jvmargs=="-mx256m -ms128m -XX:+UseGetTimeOfDay ${JVMARGS}" ## (or -Xmx256m -Xms128m for Java 1.4 and above)


The generic problem occurs when there is a time difference between what the AdminServer sees as the time, and what any other process sees as the time.

For all other platforms that the AdminServer is running on, use the SysTime.java Java code contained in the note of this solution to validate if there is a difference between the OS and Java process time.
This piece of Java code should be left running in parallel to the AdminServer. Periodically the java code will display Java Process time and system time.
If the processes encounter divergence in their times, then the 9908 error will eventually occur once the times differ by 15 minutes (the default).

The same java which is used to launch the AdminServer should be used to perform the test and the same environment variables which exist for the AdminServer should also be setup when running the Java code contained in the note of this solution .

Use the following commands on Unix to prepare the environment:
1) $DLC/bin/proenv
2) . $DLC/bin/slib_env
3) . $DLC/bin/java_env
4) java SysTime -classpath <current path>

To increase the timeout range before the 9908 error is triggered, add the following parameter to the JVMARGS setting before starting the AdminServer, :

-Dpwdtimeout=180000
Example: If the time variance is ever greater than 3 minutes (180000 milliseconds) then the 9908 error can still occur.

JVMARGS="-Xms128m ${JVMARGS} -Dpwdtimeout=180000"