@evanp/activitypub-bot 0.45.6 → 0.45.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -9,6 +9,19 @@ and this project adheres to
9
9
 
10
10
  ## [Unreleased]
11
11
 
12
+ ## [0.45.8] - 2026-04-29
13
+
14
+ ### Added
15
+
16
+ - Log memory usage.
17
+
18
+ ## [0.45.7] - 2026-04-27
19
+
20
+ ### Fixed
21
+
22
+ - Remove `onIdle` call that stalled FollowbackBot
23
+ since no workers had started yet.
24
+
12
25
  ## [0.45.6] - 2026-04-27
13
26
 
14
27
  ### Fixed
package/lib/app.js CHANGED
@@ -2,6 +2,7 @@ import http from 'node:http'
2
2
  import { resolve, dirname } from 'node:path'
3
3
  import { fileURLToPath } from 'node:url'
4
4
  import { randomUUID } from 'node:crypto'
5
+ import v8 from 'node:v8'
5
6
 
6
7
  import { Sequelize } from 'sequelize'
7
8
  import express from 'express'
@@ -69,6 +70,19 @@ export async function makeApp ({ databaseUrl, origin, bots, logLevel = 'silent',
69
70
  level: logLevel
70
71
  })
71
72
  logger.debug('Logger initialized')
73
+ const memoryStatus = (message = 'memory', level = 'debug') => {
74
+ const mem = process.memoryUsage()
75
+ const heap = v8.getHeapStatistics()
76
+ logger[level]({
77
+ rss: mem.rss,
78
+ heapUsed: mem.heapUsed,
79
+ heapTotal: mem.heapTotal,
80
+ external: mem.external,
81
+ arrayBuffers: mem.arrayBuffers,
82
+ heapSizeLimit: heap.heap_size_limit
83
+ }, message)
84
+ }
85
+ memoryStatus('makeApp started')
72
86
  const connection = databaseUrl === 'sqlite::memory:' || databaseUrl === 'sqlite::memory'
73
87
  ? new Sequelize({ dialect: 'sqlite', storage: ':memory:', logging: false })
74
88
  : new Sequelize(databaseUrl, { logging: false })
@@ -132,6 +146,8 @@ export async function makeApp ({ databaseUrl, origin, bots, logLevel = 'silent',
132
146
  await redisClient.connect()
133
147
  }
134
148
 
149
+ memoryStatus('services initialized')
150
+
135
151
  await Promise.all(
136
152
  Object.entries(bots).map(([key, bot]) => bot.initialize(
137
153
  new BotContext(
@@ -169,6 +185,8 @@ export async function makeApp ({ databaseUrl, origin, bots, logLevel = 'silent',
169
185
  bots
170
186
  ))
171
187
 
188
+ memoryStatus('bots initialized')
189
+
172
190
  const { workers: deliveryWorkers, runs: deliveryWorkerRuns } = createWorkers(logger, deliveryWorkerCount, DeliveryWorker, jobQueue, logger, { actorStorage, activityHandler, bots })
173
191
  const { workers: distributionWorkers, runs: distributionWorkerRuns } = createWorkers(logger, distributionWorkerCount, DistributionWorker, jobQueue, logger, { client })
174
192
  const { workers: fanoutWorkers, runs: fanoutWorkerRuns } = createWorkers(logger, fanoutWorkerCount, FanoutWorker, jobQueue, logger, { distributor })
@@ -179,6 +197,11 @@ export async function makeApp ({ databaseUrl, origin, bots, logLevel = 'silent',
179
197
  logger.error({ err }, 'unexpected error in job reaper')
180
198
  })
181
199
 
200
+ memoryStatus('workers initialized')
201
+
202
+ const memInterval = setInterval(() => memoryStatus('memory', 'info'), 60_000)
203
+ memInterval.unref()
204
+
182
205
  const app = express()
183
206
 
184
207
  app.locals = {
@@ -415,8 +438,11 @@ export async function makeApp ({ databaseUrl, origin, bots, logLevel = 'silent',
415
438
  }
416
439
  logger.info('Closing database connection')
417
440
  await connection.close()
441
+ clearInterval(memInterval)
418
442
  logger.info('Done')
419
443
  }
420
444
 
445
+ memoryStatus('app initialized', 'info')
446
+
421
447
  return app
422
448
  }
@@ -27,8 +27,6 @@ export default class FollowBackBot extends Bot {
27
27
  async initialize (context) {
28
28
  await super.initialize(context)
29
29
  await this.#undoStalePendingFollowing()
30
- // Drain the queue so undos arrive before re-follows
31
- await this._context.onIdle()
32
30
  await this.#synchronizeFollowers()
33
31
  }
34
32
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@evanp/activitypub-bot",
3
- "version": "0.45.6",
3
+ "version": "0.45.8",
4
4
  "description": "server-side ActivityPub bot framework",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",