El mecanismo lockedLoadData necesita disminuir la carga en el servidor.
Anteriormente, cuando la caché de configuración se limpiaba en sitios de alta carga, todos los clientes generaban la misma información que aumenta significativamente la carga de CPU / io.
Con lockedLoadData solo un cliente generará caché y otros lo esperarán.
Más detalles sobre cómo funciona.
La primera función llama a la devolución de llamada "obtener datos" y si obtiene los datos, simplemente devuélvalos (por lo tanto, si los datos están en la caché, el código funciona como antes y no usa ningún bloqueo).
Si los datos no están disponibles y el bloqueo está bloqueado, en el bucle intentamos cargar datos hasta que los datos se bloqueen o se eliminen.
Si no hay bloqueo, creamos un bloqueo y generamos datos para guardarlo en la caché y eliminar el bloqueo y devolver los datos
PD: enviamos estos cambios como un parche para uno de los clientes con una carga de hasta 20kRPM y funciona al menos 3 meses, sin ningún problema. Entonces, tal vez el problema en su personalización / módulos (por ejemplo, si rompieron el mecanismo de caché)