Como parar o script Map/Reduce no NetSuite
Mapear/reduzir scripts. Não os amamos? Eles executam tarefas complexas de processamento de dados em grandes conjuntos de dados. Eles dividem grandes conjuntos de dados em partes menores para processá-los em paralelo. Eles são a solução para muitos problemas. Mas como detê-los?
Muitas vezes, você se encontrará em uma situação em que o Map/Reduce específico precisa ser interrompido o mais rápido possível, seja para liberar a fila, reiniciar a implantação após alguma atualização de código ou para minimizar os danos que a execução atual está causando.
O NetSuite permite interromper o script Mapear/Reduzir instantaneamente, desde que ainda não esteja em execução. Você também pode interromper a execução da implantação desativando o registro do script. Pela minha experiência, pode levar de 5 a 25 minutos para que a implantação seja interrompida. Não é ideal.
A ideia
Tive a ideia de pular cada estágio do script Mapear/Reduzir utilizando o registro personalizado. O script leria o valor desse registro no início de cada estágio para determinar se alguma lógica deveria ser executada. Ignorar toda a lógica não apenas reduziria drasticamente o tempo de execução, mas também impediria qualquer alteração nos dados da conta NetSuite.
A solução
Comece definindo um novo registro personalizado. Ele precisa ter dois campos personalizados:
- Número inteiro
- Caixa de seleção
Nota: O NetSuite também permite que o campo “Script Deployment” seja selecionado, mas, apesar de meus melhores esforços, o campo não exibiu nenhuma implantação real para escolher.
A próxima etapa envolve a codificação. Precisamos criar uma função e colocá-la em qualquer script que precise ser ignorado. Requer módulos “ N/runtime ” e “ N/search ” para rodar. O objetivo da função é encontrar uma instância de registro personalizado, em que o valor do campo inteiro corresponda ao ID da implementação Mapear/Reduzir atualmente em execução e o campo da caixa de seleção esteja selecionado:
Todo o script Map/Reduce será semelhante a este:
Como você pode ver, cada estágio do Map/Reduce executará a skipCurrentStage()função para ver se a implantação em execução no momento foi marcada com registro personalizado. Se a função retornar true, a lógica adicional do estágio de script específico será ignorada.
Observação: a solução acima pode não funcionar se você tiver mais processadores SuiteCloud e executar a mesma implantação de script em paralelo.
Resumo
Como mencionado anteriormente, esta solução é ideal para reduzir o tempo de execução, ignorando qualquer lógica incluída no arquivo. Com a ajuda de um registro personalizado e algumas linhas de código, você pode pular cada etapa do script e evitar alterações nos dados da sua conta NetSuite. Essa solução pode economizar um tempo valioso e evitar possíveis danos, então experimente e veja como funciona para você.





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)