Clear working state every hour

This commit is contained in:
Douglas Barone 2022-02-07 14:25:56 -04:00
parent e08ea5ab97
commit 828ce3b524

View File

@ -12,7 +12,8 @@ import { performance } from 'perf_hooks'
import prisma from '../prisma'
const TIMEOUT_IN_MINUTES = process.env.MAPPING_TIMEOUT || '360' // 6 horas
const MAP_TIMEOUT_IN_MINUTES = process.env.MAPPING_TIMEOUT || '360' // 6 horas
const CIDR_RE = /^([0-9]{1,3}\.){3}[0-9]{1,3}(\/([0-9]|[1-2][0-9]|3[0-2]))?$/
const httpsAgent = new https.Agent({
@ -21,7 +22,7 @@ const httpsAgent = new https.Agent({
async function getDevicesWithUser() {
const now = new Date()
const timeoutThreshold = subMinutes(now, TIMEOUT_IN_MINUTES)
const timeoutThreshold = subMinutes(now, MAP_TIMEOUT_IN_MINUTES)
const wifiDevices = await prisma.wifiDevice.findMany({
where: {
@ -41,7 +42,7 @@ function createCommand(devices) {
const entries = devices.reduce(
(entries, device) =>
entries +
`<entry name="ifms\\${device.user.sAMAccountName}" ip="${device.ip}" timeout="${TIMEOUT_IN_MINUTES}"/>\n`,
`<entry name="ifms\\${device.user.sAMAccountName}" ip="${device.ip}" timeout="${MAP_TIMEOUT_IN_MINUTES}"/>\n`,
''
)
@ -59,13 +60,20 @@ function createCommand(devices) {
const isWorking = []
function clearWorkingState() {
isWorking.length = 0
}
setInterval(clearWorkingState, 3600000)
async function updateUserIdMappings() {
const allDevices = await getDevicesWithUser()
const pAHosts = await prisma.pAHost.findMany()
const jobs = pAHosts.map(async pAHost => {
if (isWorking.includes(pAHost.id)) return 0
if (isWorking.includes(pAHost.id))
return `Última execução para ${pAHost.description} ainda em andamento`
const startTime = performance.now()
@ -76,7 +84,8 @@ async function updateUserIdMappings() {
)
try {
if (devices.length == 0) return 0
if (devices.length == 0)
return `Nenhum dispositivo encontrado para ${pAHost.description}`
isWorking.push(pAHost.id)