Volver al blog
Oracle 2 min de lectura

BEA-240003: Operation Time Out al activar cambios en un clúster de WebLogic

La activación de cambios sobre un clúster de WebLogic expira con BEA-240003 y los nodos quedan en STATE_DISTRIBUTED. La causa: la fecha y hora de los hosts físicos no están sincronizadas. Diagnóstico y solución con NTP.

Portada del artículo: BEA-240003, Operation Time Out al activar cambios en un clúster de Oracle WebLogic

Al activar cambios en la consola de Oracle WebLogic —típicamente un despliegue sobre un clúster— la operación puede quedarse esperando y terminar en BEA-240003 con un timeout: los servidores destino reportan STATE_DISTRIBUTED, pero la activación nunca se da por completada. En la mayoría de los casos la causa no está dentro de WebLogic.

Escenarios validados:

  • Oracle WebLogic Server 11.1x o superior.
  • JDK 1.7x o superior.
  • Aplica a cualquier plataforma.

El error

BEA-240003 · Operation Time Out

####<Oct 15, 2018 10:55:55,517 AM EDT> <Error> <Console> <apps.rinnovocorp.com> <AdminServer>
<[ACTIVE] ExecuteThread: '8' for queue: 'weblogic.kernel.Default (self-tuning)'> <weblogic>
<BEA-240003> <Administration Console encountered the following error:
java.lang.RuntimeException: Timed out waiting for completion:
  Activate State: STATE_DISTRIBUTING
  Target Servers States: InstanciaB_srv1 STATE_DISTRIBUTED  AdminServer STATE_DISTRIBUTED

    at weblogic.management.provider.internal.ActivateTaskImpl.waitForCompletion(ActivateTaskImpl.java:505)
    at weblogic.management.provider.internal.ActivateTaskImpl.waitForTaskCompletion(ActivateTaskImpl.java:478)
    at weblogic.management.provider.internal.EditAccessImpl.activateChangesAndWaitForCompletion(EditAccessImpl.java:1720)
    at weblogic.management.mbeanservers.edit.internal.ConfigurationManagerMBeanImpl.activate(ConfigurationManagerMBeanImpl.java:435)
    ...

La causa

Por el detalle de la excepción y las características del entorno —dos managed servers en clúster, alojados en equipos físicos distintos— el origen está en que la fecha y la hora no estaban sincronizadas entre los hosts físicos miembros del clúster.

La activación de cambios es una operación coordinada entre el Administration Server y cada nodo: los servidores llegan a STATE_DISTRIBUTED, pero la tarea de activación no logra cerrar el ciclo y expira.

La solución

Verificar y ajustar la fecha y hora de los hosts físicos del clúster. Pasos en orden:

  1. Aplica los cambios en cada managed server por separado: así aíslas en qué nodo se produce la desincronización.
  2. Comprueba y ajusta la fecha y hora de cada host físico del clúster.
  3. Deja corriendo NTP en cada servidor para que la sincronización se mantenga en el tiempo.
  4. Reinicia el entorno y vuelve a activar los cambios.
# 2 · Ajuste manual de fecha y hora en Linux — formato MMddHHmm
date 10150948

# 3 · Comprobar que NTP mantiene la sincronización
ntpq -p

Resultado

Con los relojes de los hosts alineados y el entorno reiniciado, la activación de cambios en los miembros del clúster vuelve a completarse sin el timeout. Para que no se repita, la sincronización horaria por NTP debería formar parte de la línea base de cualquier clúster: en entornos distribuidos es un requisito de operación, no un detalle de infraestructura.