When you subscribe to a different instance, it can take time for the subscription to be sent to the server you're subscribing to.
Sometimes, that data never even makes it.
Honestly, "Subscribe Pending" doesn't change much, it will still show posts in your feed, and you can still make posts and comments to the community.
However, like the "subscribe pending" issue, you may end up with some comments showing up, and others never showing up, on the instance you're posting to.
I've had lots of troubles with the random nature of which comments of mine post to other instances. with beehaw and lemmy.blahaj it is seemingly at random if a comment will show up on their instance or not. When I go visit threads on beehaw or blahaj and not through lemmy.ml, sometimes comments show, sometimes they don't. It really is random and just whether or not the data made it through.
These are small servers run by volunteers and they don't have racks and racks of failover servers like reddit. The amount of data passing back and forth between instances is HUGE and it seems like a lot of that data is getting "lost" in the transit, resulting in things like missing comments or "subscribe pending."
These are part of the growing pains of a federated service.
What are the backend protocols for federation? I wonder if it’s true server load (physical lack of compute) or something like network bottlenecks (which we might be able to see by using things like NIC utilization and error rates).
Network bottlenecks may be addressable at the protocol layer with improvements to how federation works.
I'm pretty damn sure its physical lack of compute, because lemmy.ml already massively upgraded their server two weeks ago to account for this, and it's already overloaded again.
Also, this was an issue early on in Mastodon as well. The more federated servers there are, the more each server has to communicate with every other server which apparently eats up RAM and CPU cycles. So each time there's an update, it has to sent it to X number of servers, and retrieve data from X number of servers, and as X climbs, the more network activity and CPU cycles to handle it there is. A lot of requests in waiting can be stored away in RAM, but even RAM has limits.
Finally, the newest server version was supposed to help ease this kind of stuff by moving from using WebSockets to HTTP. Pretty sure the federation protocols are all just HTTP, but I could be wrong.
I have subscriptions on lemmy.ml which still refuse to go through after a couple weeks. Just tried resubscribing one of them and it's again stuck on pending. I don't know of any rush of new users happening right this minute so I doubt the server is overloaded, and the community doesn't require moderator approval to be subscribed, so I really don't know what the holdup is. But like OP, I have several that just refuse to go through.
I'm on lemmy.ml and it's slow as hell and half the time errors out and it's been like this for days. They've been under heavy load for a while and I don't know when it's going to taper off. I'm almost positive it's just a lot of data isn't making it to lemmy.ml because it's timing out.
Oddly enough, I just ran across a new community to subscribe to on lemmy.ml, and that one went right through. I also noticed another oddity (which is probably related directly to the subscribe bug)... the first time I click the subscribe button, it turns dark. If I click it a second time I get the Pending message. However for this new community, I clicked the subscribe button just once, then reloaded the page and it said I was subscribed. Going to try that with some others and see if I have any better luck.
[EDIT] I do seem to be making progress now by reloading the page. The first one took some time, and it seems like subscriptions are going slowly no matter what server they're on right now. I've seeing several that don't even show the subscribe button until I reload the page again a few minutes later but I've been able to get fully subscribed to all the groups I've checked again so far.