- Alice removes her boss from her friend list, and posts that on her feed that she is looking for a new job.
- Tom removes his mom from the friend list, and posts his Spring Break photos.
Well, being the empirical researcher we are, Aleksey and I wanted to put Twitter in to test for this scenario. On September 25, we performed this test. (I also have a video recording of this. But since I can't stand to hear myself talk in recordings, I am not posting it. I sound really weird, man.)
I first blocked Aleksey on my Twitter account, and then tweeted that Aleksey drinks a lot of tea (it's true). When we checked Aleksey's timeline, we saw that his timeline indeed did not display my tweet.
So, this was kind of an anticlimax. Twitter passed the causal-consistency test easily. No need to publish more causal-consistency papers, right? Well, maybe not quite. Maybe this was because Aleksey and I were in the same region and our accounts fall in to the same datacenter. We thought maybe we should repeat the test with Aleksey connected to Twitter via a proxy, but then since Aleksey's laptop was away that day, we decided to test this at another time. (Maybe we should find someone from another region and arrange a cross-continental Twitter causality test this time.) Anyways, this story gets more interesting. Keep reading. I unblocked Aleksey, and Aleksey checked that he was following me again, and we called it a day.@alekseycharapko drinks way too much tea.— Murat Demirbas (@muratdemirbas) September 25, 2018
But a couple days later, I was tweeting something and wanted to include a mention to @AlekseyCharapko in my tweet. But Twitter didn't autocomplete for me. I finally found his account after some searching on Twitter, and saw that Aleksey is not following me. What!? My student doesn't follow me on Twitter? Impossible. I showed this to Aleksey and he was also caught by surprise.We then remembered about the Twitter test we did a couple days ago. It must be that although I unblocked Aleksey after our test, a nightly batch job blocked him from my account and made his account unfollow me. Reality is often stranger than the clean models we have. Real systems have a lot of back channels and processes. 1) What is the right way to test this?
Sending two consecutive tweets from one account and monitoring from another does not seem sufficient to test causal-consistency to me. The tweets are likely partitioned with the user_id, and so just session consistency or per-key ordering would give the impression of causal consistency, right?
To offset for this, we tried another test, where I tweet something, Ailidani reads it and presses the button on his drafted tweet, and Aleksey checks his feed for the result. It was no contest again. Twitter is so fast that it displayed my tweet on Aleksey's timeline immediately and Ailidani's tweet didn't stand a chance.(Another thing to note for completeness. Under content preferences, we disable the "show me the best tweets first" to get a time ordered tweet stream.)
2) Where would you put your money?
Underlying storage (Manhattan) supports sequential ordering of per-object updates and they fan-out writes to per-user timelines. And it makes sense to do, so probably yes. https://t.co/zNca2y6Xxa— Andrey Satarin (@asatarin) November 13, 2018
Anecdotally, I've never observed causality violation in twitter timelines.