Facebook's privacy settings have a ton of bugs. Here's another one:
1. Make a stupid status update post.
2. It appears in all your friends newsfeed.
3. You realize you said something stupid and private.
4. Panic. Delete post
5. Breathe sigh of relief that it is no longer showing up in your profile.
6. But wait a minute! It still keeps showing up in all your friends newsfeed.
7. Now that you deleted the post, you can't even modify it's visibility settings. Heck you can't even get to the url. But all your friends continue to see the post in their newsfeeds
So the way facebook implements a delete of any activity(status post/like/comment) is that the owner stops seeing it but everyone else keeps seeing it. That is simply the most retarded delete implementation ever!
This isn't a case of eventual consistency. They don't bother to update the cache(if that is the reason) or update the database used in newsfeed. The deleted posts persist in the newsfeed database many hours(maybe forever) after the delete event.
huh? Infrastructure is totally and utterly irrelevant to the problem. I know enough about commonsense to make such a claim.
Just send a new message, exactly as you would post an original item/comment/etc, but have some special text/field in there that says "please ignore the previous message". The UI would then hide the previous message.
eg
COMMENT: {id:9374758, from:"mibbitier", data:"I hate you all!"}
COMMENT: {id:9374759, from:"mibbitier", data:"*IGNORE_MESSAGE_IN_UI* 9374758"}
Nothing whatsoever to do with infrastructure. Nothing to do with caches. Purely to do with the UI. Not rocket science.
Granted, it's a poor way to do it, but it's better than nothing, and easier than trying to invalidate caches etc
Here's the thing that customers, managers, and less experienced developers all have in common: they understand that no one thing is difficult. But they don't take into account that managing the complexity between a thousand, or a hundred thousand, or a million rules is very, very difficult.
That's why you hire more experienced developers: they're more experienced, not at things like cache invalidation (sure, just nuke your entire cache anytime anything changes! easy!), but at managing complexity.
Which is difficult.
That's why I try to keep my mouth shut about how somebody should "just do this, it'd be so easy, why are they dumb?"
So the way facebook implements a delete of any activity(status post/like/comment) is that the owner stops seeing it but everyone else keeps seeing it. That is simply the most retarded delete implementation ever!