session batchresults

Escenario de Rendimiento: Intervención del Administrador en un Trabajo Bloqueado

Scénario de test & Cas d'usage

Contexto empresarial

Un administrador de SAS Viya detecta una sesión interactiva que ha estado ejecutando una consulta de agregación masiva durante un tiempo inusualmente largo, consumiendo recursos significativos. Para evitar un impacto en otros usuarios, el administrador decide intervenir y forzar que el trabajo de esa sesión pase a modo de lote, liberando la sesión del usuario y gestionando la carga del servidor.
Sobre el conjunto : session

Gestión del estado de la sesión CAS.

Descubrir todas las acciones de session
Preparación de datos

No se requiere preparación de datos. El escenario se simula iniciando una acción de larga duración (`builtins.sleep`) para representar un trabajo pesado y bloqueante.

¡Copiado!
1/* No se necesita código de preparación de datos. La simulación se basa en una acción que consume tiempo. */

Étapes de réalisation

1
En una sesión de usuario ('user_session'), iniciar una acción que simula un trabajo muy largo (ej. 300 segundos).
¡Copiado!
1 
2SESSION user_session;
3ACTION BUILTINS.sleep / seconds=300;
4RUN;
5/* Esta sesión ahora está bloqueada */
2
En una sesión de administrador ('admin_session'), listar todas las sesiones activas para identificar el UUID de la 'user_session' que está bloqueada.
¡Copiado!
1SESSION admin_session;
2 ACTION listSessions RESULT=r;
3 /* El administrador inspeccionaría la salida 'r' para encontrar el UUID de la sesión del usuario */
4RUN;
3
El administrador ejecuta 'batchresults' con el UUID de la 'user_session' para desacoplar el trabajo 'sleep'.
¡Copiado!
1/* Asumir que 'user_sess_uuid' contiene el UUID de 'user_session' */
2 
3SESSION.batchresults uuid="<uuid_de_user_session>";
4RUN;
5 
4
Verificar que la 'user_session' ya no está bloqueada intentando ejecutar una acción simple en ella, como 'serverStatus'.
¡Copiado!
1 
2SESSION user_session;
3ACTION BUILTINS.serverStatus;
4RUN;
5 

Resultado esperado


La acción `batchresults` ejecutada por el administrador debe forzar que la acción `builtins.sleep` de la `user_session` pase a segundo plano. Inmediatamente después, la `user_session` debe quedar desbloqueada y ser capaz de ejecutar nuevas acciones, como `serverStatus`, lo cual debería ejecutarse con éxito. El log del administrador confirmará la operación `batchresults`.