Summary
When migrating a Mastodon-compatible account to Hollo via the ActivityPub Move activity, a large fraction of followers who processed the Move on their side (unfollowed the old account) never appeared as followers on the Hollo instance. Four affected users independently reported seeing a "pending" follow request for the Hollo account on their end. Hollo's logs contain no record of ever receiving Follow activities from any of these four users around the time of the migration — the Follow requests were sent by their servers but never arrived at Hollo's inbox.
Environment
- Hollo version: 0.7.10
- Fedify version: 1.10.8 (from lockfile)
- Node.js: 22.22.2
- PostgreSQL: 15 (with
any_value aggregate installed manually)
- Platform: CentOS 7 (kernel 3.10, glibc 2.17) on shared hosting
- Reverse proxy: nginx,
BEHIND_PROXY=true, BIND=0.0.0.0
Migration history
The account went through two consecutive migrations a few days apart:
@johndoe@mastodon-instance.tld → @johndoe@social.domain.tld (snac2 self-hosted)
@johndoe@social.domain.tld → @johndoe@hollo.domain.tld (Hollo self-hosted)
At the time of the snac2 → Hollo Move, @johndoe@hollo.domain.tld had the alsoKnownAs field correctly set to include https://social.domain.tld/johndoe (verified from the live actor JSON). The account has never had protected enabled (protected = false in the database throughout).
Verified observations
On the snac2 side (old instance logs):
- The
snac migrate command delivered the Move activity to 985 inboxes at approximately 14:55 on 2026-04-10
- Within ~10 minutes, 803 remote accounts processed the Move and sent
Undo Follow activities back to snac2 ("no longer following us" log entries)
- snac2's follower count dropped from ~985 to ~8
On the Hollo side (database):
SELECT
DATE(created) AS day,
EXTRACT(HOUR FROM created) AS hour,
COUNT(*) AS follows
FROM follows f
JOIN accounts a ON a.id = f.following_id
WHERE a.handle = '@johndoe@hollo.domain.tld'
AND approved IS NOT NULL
GROUP BY day, hour
ORDER BY day, hour;
| day |
hour |
follows |
| 2026-04-10 |
13 |
1 |
| 2026-04-10 |
14 |
214 |
| 2026-04-10 |
15 |
30 |
| 2026-04-10 |
16 |
1 |
| 2026-04-10 |
23 |
1 |
| 2026-04-11 |
7 |
1 |
| 2026-04-11 |
18 |
3 |
| 2026-04-11 |
19 |
11 |
SELECT
COUNT(*) FILTER (WHERE approved IS NULL) AS pending,
COUNT(*) FILTER (WHERE approved IS NOT NULL) AS accepted
FROM follows f
JOIN accounts a ON a.id = f.following_id
WHERE a.handle = '@johndoe@hollo.domain.tld';
Summary of the gap:
- 803 accounts unfollowed snac2 after the Move
- 262 accounts appear as accepted followers on Hollo
- ~541 accounts unfollowed the old instance but are absent from Hollo's database entirely
Four users on different remote instances reported that their Mastodon client showed a "pending" follow request for @johndoe@hollo.domain.tld after the Move was processed. All four have since cancelled their pending requests and re-followed manually, which was accepted. Searching Hollo's full log file for all activity associated with these four accounts, the first appearance of any of them is their Undo Follow activity on 2026-04-11, when they cancelled the pending request. There is no log entry showing Hollo received a Follow activity from any of these four users at any earlier point — in particular, nothing around 14:55–15:30 on 2026-04-10 when the Move was processed and the bulk of follow requests arrived.
Notes
This issue was investigated by querying the Hollo PostgreSQL database, cross-referencing follower lists between the old and new instances, and analysing server logs from both snac2 and Hollo. The investigation and this bug report were produced with the assistance of Claude Code, which was used to query the database, cross-reference follower lists, analyse log files, and summarise the findings. I've checked and revised the report carefully so it reflects what happened to the best of my knowledge.
Summary
When migrating a Mastodon-compatible account to Hollo via the ActivityPub
Moveactivity, a large fraction of followers who processed the Move on their side (unfollowed the old account) never appeared as followers on the Hollo instance. Four affected users independently reported seeing a "pending" follow request for the Hollo account on their end. Hollo's logs contain no record of ever receiving Follow activities from any of these four users around the time of the migration — the Follow requests were sent by their servers but never arrived at Hollo's inbox.Environment
any_valueaggregate installed manually)BEHIND_PROXY=true,BIND=0.0.0.0Migration history
The account went through two consecutive migrations a few days apart:
@johndoe@mastodon-instance.tld→@johndoe@social.domain.tld(snac2 self-hosted)@johndoe@social.domain.tld→@johndoe@hollo.domain.tld(Hollo self-hosted)At the time of the snac2 → Hollo Move,
@johndoe@hollo.domain.tldhad thealsoKnownAsfield correctly set to includehttps://social.domain.tld/johndoe(verified from the live actor JSON). The account has never hadprotectedenabled (protected = falsein the database throughout).Verified observations
On the snac2 side (old instance logs):
snac migratecommand delivered the Move activity to 985 inboxes at approximately 14:55 on 2026-04-10Undo Followactivities back to snac2 ("no longer following us"log entries)On the Hollo side (database):
Summary of the gap:
Four users on different remote instances reported that their Mastodon client showed a "pending" follow request for
@johndoe@hollo.domain.tldafter the Move was processed. All four have since cancelled their pending requests and re-followed manually, which was accepted. Searching Hollo's full log file for all activity associated with these four accounts, the first appearance of any of them is theirUndo Followactivity on 2026-04-11, when they cancelled the pending request. There is no log entry showing Hollo received a Follow activity from any of these four users at any earlier point — in particular, nothing around 14:55–15:30 on 2026-04-10 when the Move was processed and the bulk of follow requests arrived.Notes
This issue was investigated by querying the Hollo PostgreSQL database, cross-referencing follower lists between the old and new instances, and analysing server logs from both snac2 and Hollo. The investigation and this bug report were produced with the assistance of Claude Code, which was used to query the database, cross-reference follower lists, analyse log files, and summarise the findings. I've checked and revised the report carefully so it reflects what happened to the best of my knowledge.