From 1de7a6c60c9d904b1e9ab53be30eea9aacdf9686 Mon Sep 17 00:00:00 2001 From: Etienne Samson Date: Wed, 15 Apr 2026 01:17:59 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A8=20Expose=20the=20shard=20name=20an?= =?UTF-8?q?d=20remaining=20bucket=20in=20the=20`user:$id/cpu`=20message?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/runtime/make.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/runtime/make.js b/lib/runtime/make.js index 5a5903e..d4cfd5e 100644 --- a/lib/runtime/make.js +++ b/lib/runtime/make.js @@ -13,7 +13,8 @@ var common = require('@screeps/common'), pathfinderFactory = require('../path-finder'), index = require('../index'), runtimeData = require('./data'), - runtimeUserVm = require('./user-vm'); + runtimeUserVm = require('./user-vm'), + os = require('os'); let staticTerrainData, staticTerrainDataSize = 0; @@ -211,6 +212,7 @@ async function make (scope, userId) { $set.cpuAvailable = newCpuAvailable; } + Object.assign(userData.user, $set); db.users.update({_id: userData.user._id}, {$set}); if (runResult.activeForeignSegment !== undefined) { @@ -259,15 +261,20 @@ async function make (scope, userId) { } } + const shardName = await env.get(env.keys.SHARD_NAME) ?? os.hostname(); if (/CPU limit reached/.test(runResult.error)) { pubsub.publish(`user:${userData.user._id}/cpu`, JSON.stringify({ + shard: shardName, cpu: 'error', + bucket: userData.user.cpuAvailable, memory: runResult.memory.data.length })); } else { pubsub.publish(`user:${userData.user._id}/cpu`, JSON.stringify({ + shard: shardName, cpu: runResult.usedTime, + bucket: userData.user.cpuAvailable, memory: runResult.memory.data.length })); }