diff --git a/services/appsService.js b/services/appsService.js index fe7bffe9..d7ea4f6e 100644 --- a/services/appsService.js +++ b/services/appsService.js @@ -9093,6 +9093,7 @@ async function trySpawningGlobalApplication() { log.info(`trySpawningGlobalApplication - Found ${numberOfGlobalApps} that are missing instances on the network.`); let appToRun = null; + let appToRunAux = null; let minInstances = null; let appFromAppsToBeCheckedLater = false; const appIndex = appsToBeCheckedLater.findIndex((app) => app.timeToCheck >= Date.now()); @@ -9113,8 +9114,13 @@ async function trySpawningGlobalApplication() { return; } log.info(`trySpawningGlobalApplication - Found ${globalAppNamesLocation.length} apps that are missing instances on the network and can be selected to try to spawn on my node.`); - const random = Math.floor(Math.random() * globalAppNamesLocation.length); - const appToRunAux = globalAppNamesLocation[random]; + let random = Math.floor(Math.random() * globalAppNamesLocation.length); + appToRunAux = globalAppNamesLocation[random]; + const filterAppsWithNyNodeIP = globalAppNamesLocation.filter((app) => app.nodes.find((ip) => ip === myIP)); + if (filterAppsWithNyNodeIP.length > 0) { + random = Math.floor(Math.random() * filterAppsWithNyNodeIP.length); + appToRunAux = filterAppsWithNyNodeIP[random]; + } appToRun = appToRunAux.name; minInstances = appToRunAux.required; log.info(`trySpawningGlobalApplication - Application ${appToRun} selected to try to spawn. Reported as been running in ${appToRunAux.actual} instances and ${appToRunAux.required} are required.`); @@ -9274,7 +9280,7 @@ async function trySpawningGlobalApplication() { await verifyRepository(componentToInstall.repotag, { repoauth: componentToInstall.repoauth, architecture }); } - if (!appFromAppsToBeCheckedLater) { + if (!appFromAppsToBeCheckedLater && appToRunAux.nodes.length === 0) { const tier = await generalService.nodeTier(); const appHWrequirements = totalAppHWRequirements(appSpecifications, tier); if (tier === 'bamf' && appHWrequirements.cpu < 3 && appHWrequirements.ram < 6000 && appHWrequirements.hdd < 150) { diff --git a/services/benchmarkService.js b/services/benchmarkService.js index b7f75a28..fdec68cb 100644 --- a/services/benchmarkService.js +++ b/services/benchmarkService.js @@ -17,7 +17,8 @@ let response = messageHelper.createErrorMessage(); let benchdClient = null; async function buildBenchdClient() { - const fluxbenchdPath = '/dat/usr/lib/fluxbenchd'; + const homeDirPath = path.join(__dirname, '../../../../'); + const fluxbenchdPath = path.join(homeDirPath, '.fluxbenchmark'); const exists = await fs.stat(fluxbenchdPath).catch(() => false); diff --git a/services/syncthingService.js b/services/syncthingService.js index 77277e92..3150d601 100644 --- a/services/syncthingService.js +++ b/services/syncthingService.js @@ -51,39 +51,38 @@ const stc = new FluxController(); * @returns {Promise<(string | null)>} config gile (XML). */ async function getConfigFile() { - // const homedir = os.homedir(); - // const configDir = path.join(homedir, '.config'); - // const syncthingDir = path.join(configDir, 'syncthing'); - // const configFile = path.join(syncthingDir, 'config.xml'); - const configFile = '/dat/usr/lib/syncthing/config.xml'; + const homedir = os.homedir(); + const configDir = path.join(homedir, '.config'); + const syncthingDir = path.join(configDir, 'syncthing'); + const configFile = path.join(syncthingDir, 'config.xml'); - // const user = os.userInfo().username; - // const owner = `${user}:${user}`; + const user = os.userInfo().username; + const owner = `${user}:${user}`; // As syncthing is running as root, we need to change owenership to running user - // const { error: chownConfigDirError } = await serviceHelper.runCommand('chown', { - // runAsRoot: true, - // logError: false, - // params: [owner, configDir], - // }); + const { error: chownConfigDirError } = await serviceHelper.runCommand('chown', { + runAsRoot: true, + logError: false, + params: [owner, configDir], + }); - // if (chownConfigDirError) return null; + if (chownConfigDirError) return null; - // const { error: chownSyncthingError } = await serviceHelper.runCommand('chown', { - // runAsRoot: true, - // logError: false, - // params: [owner, syncthingDir], - // }); + const { error: chownSyncthingError } = await serviceHelper.runCommand('chown', { + runAsRoot: true, + logError: false, + params: [owner, syncthingDir], + }); - // if (chownSyncthingError) return null; + if (chownSyncthingError) return null; - // const { error: chmodError } = await serviceHelper.runCommand('chmod', { - // runAsRoot: true, - // logError: false, - // params: ['644', configFile], - // }); + const { error: chmodError } = await serviceHelper.runCommand('chmod', { + runAsRoot: true, + logError: false, + params: ['644', configFile], + }); - // if (chmodError) return null; + if (chmodError) return null; let result = null; // this should never reject as chown would error first but just in case @@ -2495,11 +2494,10 @@ async function runSyncthingSentinel() { log.error('Unable to get syncthing deviceId. Reconfiguring syncthing.'); await stopSyncthing(); await installSyncthingIdempotently(); - // await configureDirectories(); + await configureDirectories(); - // const homedir = os.homedir(); - // const syncthingHome = path.join(homedir, '.config/syncthing'); - const syncthingHome = '/dat/usr/lib/syncthing'; + const homedir = os.homedir(); + const syncthingHome = path.join(homedir, '.config/syncthing'); const logFile = path.join(syncthingHome, 'syncthing.log'); if (stc.aborted) return 0; @@ -2517,26 +2515,32 @@ async function runSyncthingSentinel() { // adding old spawn with shell in the interim. childProcess.spawn( - 'nohup', - [ - 'syncthing', - '--logfile', - logFile, - '--logflags=3', - '--log-max-old-files=2', - '--log-max-size=26214400', - '--allow-newer-config', - '--no-browser', - '--home', - syncthingHome, - ], - { - detached: true, - stdio: 'ignore', - env: { HOME: syncthingHome }, - }, + `sudo nohup syncthing --logfile ${logFile} --logflags=3 --log-max-old-files=2 --log-max-size=26214400 --allow-newer-config --no-browser --home ${syncthingHome} >/dev/null 2>&1