HCL Commerce Version 9.1.13.0

Resolución de problemas: La búsqueda emite un error 500 del servidor interno cuando FacetPageSize es superior a 1000

Cuando se habilita un gran número de atributos como consultables y la propiedad de configuración del componente FacetPageSize se establece en un valor superior al valor predeterminado de 1000, las consultas de búsqueda agotan el tiempo de espera con un error 500 internal server.

Problema

Si ha establecido un gran número de atributos como consultables (por ejemplo, 5000 o más), el aumento de la propiedad de configuración del componente FacetPageSize a un valor alto como 2000, 5000 o 20000 da como resultado que el tiempo de espera se agote con el mensaje Cannot connect to search server. En este caso, el valor predeterminado de 1000 podría continuar funcionando, sin embargo, es posible que este no sea el valor que necesita. Aparecerá un volcado de errores más detallado que mostrará algo parecido a lo siguiente, donde 5000 atributos están establecidos como consultables:
2023-06-08T10:08:06.665Z [Default Executor-thread-11] [7242254821593936814] ERROR c.h.c.s.rest.AbstractSearchResource.executeSearch:500 - Failed to perform search: java.net.SocketTimeoutException: 16,500 milliseconds timeout on connection http-outgoing-0 [ACTIVE] at org.apache.http.nio.protocol.HttpAsyncRequestExecutor.timeout(HttpAsyncRequestExecutor.java:387) at org.apache.http.impl.nio.client.InternalIODispatch.onTimeout(InternalIODispatch.java:92) at org.apache.http.impl.nio.client.InternalIODispatch.onTimeout(InternalIODispatch.java:39) at org.apache.http.impl.nio.reactor.AbstractIODispatch.timeout(AbstractIODispatch.java:175) at org.apache.http.impl.nio.reactor.BaseIOReactor.sessionTimedOut(BaseIOReactor.java:261) at org.apache.http.impl.nio.reactor.AbstractIOReactor.timeoutCheck(AbstractIOReactor.java:502) at org.apache.http.impl.nio.reactor.BaseIOReactor.validate(BaseIOReactor.java:211) at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:280) at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:104) at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:591)

Solución

La búsqueda se completará con el tiempo suficiente. Puede retrasar el tiempo de espera ajustando la propiedad de configuración del componente maxTimeAllowed, tal y como se describe en Propiedades de configuración de los componentes. Por ejemplo, al establecer maxTimeAllowed en 30000, puede permitir que la búsqueda se complete sin que aparezca un mensaje que indique que se ha excedido el tiempo de espera, aunque sí habrá un retraso.