Como parar o script Map/Reduce no NetSuite

Apr 13 2023
Método útil para pular o script em execução.
Mapear/reduzir scripts. Não os amamos? Eles executam tarefas complexas de processamento de dados em grandes conjuntos de dados.

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ê.