Cómo detener el script Map/Reduce en NetSuite
Asignar/Reducir secuencias de comandos. ¿No los amamos? Realizan tareas complejas de procesamiento de datos en grandes conjuntos de datos. Descomponen grandes conjuntos de datos en fragmentos más pequeños para procesarlos en paralelo. Son la solución a muchos problemas. Pero, ¿cómo detenerlos?
Muchas veces se encontrará en una situación en la que Map/Reduce en particular debe detenerse lo antes posible, ya sea para liberar la cola, reiniciar la implementación después de alguna actualización de código o para minimizar el daño que está causando la ejecución actual.
NetSuite le permite detener el script Map/Reduce instantáneamente, siempre y cuando no se esté ejecutando todavía. También puede detener la ejecución de la implementación desactivando el registro de secuencias de comandos. Según mi experiencia, la implementación puede tardar entre 5 y 25 minutos en detenerse. No es ideal.
La idea
Se me ocurrió la idea de omitir cada etapa del script Map/Reduce utilizando un registro personalizado. El script leería el valor de ese registro al comienzo de cada etapa para determinar si se debe ejecutar alguna lógica. Omitir toda la lógica no solo reduciría drásticamente el tiempo de ejecución, sino que también evitaría cualquier cambio en los datos de la cuenta de NetSuite.
La solución
Comience por definir un nuevo registro personalizado. Debe tener dos campos personalizados:
- Número entero
- casilla de verificación
Nota: NetSuite también permite seleccionar el campo "Implementación de secuencias de comandos", pero a pesar de mis mejores esfuerzos, el campo no mostraba ninguna implementación real para elegir.
El siguiente paso implica la codificación. Necesitamos crear una función y colocarla en cualquier script que deba omitirse. Requiere módulos “ N/runtime ” y “ N/search ” para funcionar. El propósito de la función es encontrar una instancia de registro personalizado, donde el valor del campo entero coincida con el ID de la implementación Map/Reduce que se está ejecutando actualmente, y el campo de la casilla de verificación esté seleccionado:
Todo el script Map/Reduce se verá similar a esto:
Como puede ver, cada etapa de Map/Reduce ejecutará la skipCurrentStage()función para ver si la implementación que se está ejecutando actualmente se ha marcado con un registro personalizado. Si la función devuelve true, se omitirá la lógica adicional de la etapa de script en particular.
Nota: es posible que la solución anterior no funcione si tiene más procesadores SuiteCloud y ejecuta la misma implementación de secuencias de comandos en paralelo.
Resumen
Como se mencionó anteriormente, esta solución es ideal para acortar el tiempo de ejecución al omitir cualquier lógica incluida en el archivo. Con la ayuda de un registro personalizado y unas pocas líneas de código, puede omitir cada etapa del script y evitar cualquier cambio en los datos de su cuenta de NetSuite. Esta solución puede ahorrarle un tiempo valioso y evitar posibles daños, así que pruébela y vea cómo funciona para usted.

![¿Qué es una lista vinculada, de todos modos? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































