Se produjo un error al recuperar los elementos secundarios de la ruta de acceso

Estás viendo la documentación de Apigee Edge.
Ir a la documentación de Apigee X.
info

Síntoma

La implementación de las revisiones del proxy de API a través de la IU de Edge o la API de administración de Edge falla con el error de ZooKeeper "Error while fetching children for path".

Mensajes de error

Error in deployment for environment prod. 
The revision is deployed, but traffic cannot flow. com.apigee.repository.RepositoryException{ code = repository.zookeeper.UnExpectedError, message = Unexpected error Error while fetching children for path : /organizations/myorg/environments/prod/apiproxies/tinkerbell/revisions, associated contexts = []};

Causas posibles

La causa típica de este error es un problema de conectividad de red entre el Message Processor y ZooKeeper.

Diagnóstico

Nota: Solo los usuarios de Edge para la nube privada pueden realizar los siguientes pasos. Si usas Edge para la nube pública, comunícate con el equipo de asistencia de Apigee Edge.

  1. Obtén el resultado del estado de implementación de la API específica que muestra el error con la siguiente llamada a la API de administración:
    curl -v http://<management-server-IPaddress>:<port#>/organizations/<orgname>/environments/<envname>/apis/<apiname>/deployments -u <username>

    Ejemplo de resultado del estado de implementación que muestra el error:

    { 
    "environment" : [ { 
    "name" : "prod", 
    "revision" : [ { 
    "configuration" : { 
    "basePath" : "/", 
    "steps" : [ ] 
    }, 
    "name" : "1", 
    "server" : [ { 
    "error" : "com.apigee.repository.RepositoryException: com.apigee.zookeeper.ZooKeeperException{ code = zookeeper.ErrorFetchingChildren, message = Error while fetching children for path : /organizations/gsc/environments/prod/apiproxies/apigee_test/revisions, associated contexts = []}", 
    "status" : "error", 
    "type" : [ "message-processor" ], 
    "uUID" : "01fc5b23-8ad3-40bf-b059-2fc82cdac111" 
    },
  2. Verifica el Message Processor (/opt/apigee/var/log/edge-message-processor/system.log).

    Ejemplo de error del registro de Message Processor

    2017-05-29 01:25:40,592  main ERROR KERNEL - MicroKernel.deployAll() : MicroKernel.deployAll() : Error in deploying the deployment : WebService
    com.apigee.zookeeper.ZooKeeperException: Error while checking path existence for path : /regions/dc-2/pods/gateway/servers/099c2603-93a4-4b73-ae03-a55d130adb80/reachable
            at com.apigee.zookeeper.impl.ZooKeeperServiceImpl.exists(ZooKeeperServiceImpl.java:410) ~[zookeeper-1.0.0.jar:na]
            at com.apigee.zookeeper.impl.ZooKeeperServiceImpl.exists(ZooKeeperServiceImpl.java:394) ~[zookeeper-1.0.0.jar:na]
            at com.apigee.services.repository.zookeeper.ZKRepository.exists(ZKRepository.java:280) ~[repository-impl-1.0.0.jar:na]
            at com.apigee.services.repository.RepositoryServiceImpl.exists(RepositoryServiceImpl.java:234) ~[repository-impl-1.0.0.jar:na]
            at com.apigee.registration.info.StatusBuilder.build(StatusBuilder.java:26) ~[registration-1.0.0.jar:na]
            at com.apigee.registration.ServerRegistrationServiceImpl.buildServerInfo(ServerRegistrationServiceImpl.java:856) ~[registration-1.0.0.jar:na]
            at com.apigee.registration.ServerRegistrationServiceImpl.start(ServerRegistrationServiceImpl.java:122) ~[registration-1.0.0.jar:na]
            at com.apigee.kernel.service.deployment.ServiceDeployer.startService(ServiceDeployer.java:167) ~[microkernel-1.0.0.jar:na]
            at com.apigee.kernel.service.deployment.ServiceDeployer.deploy(ServiceDeployer.java:70) ~[microkernel-1.0.0.jar:na]
            at com.apigee.kernel.service.deployment.ServiceDeployer.deployDependantServices(ServiceDeployer.java:356) ~[microkernel-1.0.0.jar:na]
            at com.apigee.kernel.service.deployment.ServiceDeployer.deploy(ServiceDeployer.java:76) ~[microkernel-1.0.0.jar:na]
            at com.apigee.kernel.service.deployment.ServiceDeployer.deployDependantServices(ServiceDeployer.java:356) ~[microkernel-1.0.0.jar:na]
            at com.apigee.kernel.service.deployment.ServiceDeployer.deploy(ServiceDeployer.java:76) ~[microkernel-1.0.0.jar:na]
            at com.apigee.kernel.MicroKernel.deployAll(MicroKernel.java:178) [microkernel-1.0.0.jar:na]
            at com.apigee.kernel.MicroKernel.start(MicroKernel.java:139) [microkernel-1.0.0.jar:na]
            at com.apigee.kernel.MicroKernel.start(MicroKernel.java:135) [microkernel-1.0.0.jar:na]
            at com.apigee.kernel.MicroKernel.main(MicroKernel.java:84) [microkernel-1.0.0.jar:na]
    Caused by: org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /regions/dc-2/pods/gateway/servers/099c2603-93a4-4b73-ae03-a55d130adb80/reachable
            at org.apache.zookeeper.KeeperException.create(KeeperException.java:99) ~[zookeeper-3.4.6.jar:3.4.6-1569965]
            at org.apache.zookeeper.KeeperException.create(KeeperException.java:51) ~[zookeeper-3.4.6.jar:3.4.6-1569965]
            at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1045) ~[zookeeper-3.4.6.jar:3.4.6-1569965]
            at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1073) ~[zookeeper-3.4.6.jar:3.4.6-1569965]
            at com.apigee.zookeeper.impl.ZooKeeperServiceImpl.exists(ZooKeeperServiceImpl.java:402) ~[zookeeper-1.0.0.jar:na]
            ... 16 common frames omitted
  3. Si observas un error similar al que se muestra en el ejemplo anterior, realiza los siguientes pasos:
    1. Prueba la conectividad del Message Processor a los servidores de ZooKeeper en el puerto 2181 con los siguientes pasos:
      1. Si telnet está disponible, úsalo:
        telnet <ZooKeeper-IP> 2181
      2. Si telnet no está disponible, usa netcat para verificar la conectividad de la siguiente manera:
        nc -vz <ZooKeeper-IP> 2181
      3. Si recibes la respuesta "Connection Refused" o "Connection timed out", comunícate con tu equipo de operaciones de red. Ve a la sección Solución que se encuentra más abajo.
  4. Si observas algún otro error, comunícate con el equipo de asistencia de Apigee Edge.

Solución

Nota: Solo los usuarios de Edge para la nube privada pueden realizar los siguientes pasos. Si usas Edge para la nube pública, comunícate con el equipo de asistencia de Apigee Edge.

  1. Trabaja con tu equipo de red para hacer lo siguiente:
      1. Asegúrate de que se permita la conectividad entre el Message Processor y todos los nodos de ZooKeeper en el puerto 2181.
      2. Quita las restricciones de firewall o las reglas de seguridad configuradas de los Message Processors para permitir la conectividad al puerto 2181 en los servidores de ZooKeeper.
    1. Si hay un problema de red en el Message Processor, reiniciar el Message Processor específico que muestra el error (según el resultado del estado de implementación) podría solucionar el problema. Reinicia el Message Processor específico:
      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart

    Si el problema persiste, comunícate con el equipo de asistencia de Apigee Edge.