TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

What happened to Vivaldi Social?

300 点作者 zhte415将近 2 年前

14 条评论

mollems将近 2 年前
Great writeup (including the human cost, e.g. loss &#x2F; lack of sleep, which in my experience has a huge impact on complicated incident resolution).<p>Here’s what jumped out at me: “The new account was created in our database with a null value in the URI field.”<p>Almost every time I see a database-related postmortem — and I have seen a lot of them — NULL is lurking somewhere in the vicinity of the crime scene. Even if NULL sometimes turns out not to be the killer, it should always be brought in for questioning.<p>My advice is: never rely on NULL as a sentinel value, and if possible, don’t allow it into the database at all. Whatever benefits you think you might gain, they will inevitably be offset by a hard-to-find bug, quite possibly years later, where some innocuous-seeming statement expects either NULL or NOT NULL and the results are unexpected (often due to drift in the semantics of the data model).<p>Although this was a race condition, if the local accounts and the remote accounts were affirmatively distinguished by type, the order of operations may not have mattered (and the account merge code could have been narrowly scoped).
评论 #36923846 未加载
评论 #36923671 未加载
评论 #36924296 未加载
评论 #36925915 未加载
评论 #36925535 未加载
empathy_m将近 2 年前
The part that resonates here is saying<p>&quot;ah yes well we have a full database backup so we can do a full restore&quot;, then<p>&quot;the full restore will be tough and involve downtime and has some side effects,&quot; then<p>&quot;I bet we could be clever and restore only part of the data that are missing&quot;, then<p>doing that by hand, which hits weird errors, then<p>finally shipping the jury-rigged selective restore and cleaning up the last five missing pieces of data (hoping you didn&#x27;t miss a sixth)<p>Happens every time someone practices backup&#x2F;restore no matter how hard they&#x27;ve worked in advance. It always ends up being an application level thing to decide what data to put back from the backup image.
评论 #36921420 未加载
martey将近 2 年前
&gt; <i>To Renaud, Claire, and Eugen of the Mastodon developer team, who went above and beyond all expectations to help us out. You folks were amazing, you took our situation very seriously, and immediately jumped in to help us. I really could not have asked for anything more. Thank you!</i><p>I don&#x27;t know if Vivaldi provides financial support to Mastodon (I couldn&#x27;t find their name on the sponsors page). If not, I hope this situation causes them (and other companies using Mastodon) to consider sponsorship or a support contract.
评论 #36923832 未加载
评论 #36923153 未加载
评论 #36923690 未加载
yellowapple将近 2 年前
One of the better post-mortems I&#x27;ve read in a long while.
评论 #36923549 未加载
rsynnott将近 2 年前
Items two and three not happening atomically feels like an issue, though I assume there&#x27;s a reason that it&#x27;s not trivial to do so (I haven&#x27;t looked at the code; really should at some point.)
评论 #36921143 未加载
INTPenis将近 2 年前
I&#x27;ll never forget the first time I had to restore a massive sql dump and realized that vim actually segfaults trying to read it.<p>That&#x27;s when I discovered the magic of spit(1) &quot;split a file into pieces&quot;. I just split the huge dump into one file per table.<p>Of course a table can also be massive, but at least the file is now more uniform which means you can easier run other tools on it like sed or awk to transform queries.
评论 #36923854 未加载
评论 #36923534 未加载
TylerE将近 2 年前
This make anyone elses eyebrows raise sky high at this?<p>&gt; Claire replied, asking for the full stacktraces for the log entries, which I was able to also extract from the logs.<p>This is either deep voodoo magic, or the code or configuration is turning a Xeon into the equivalent of a 286. House is that not, like, megabytes on every single hit?
评论 #36921049 未加载
评论 #36921022 未加载
评论 #36922321 未加载
评论 #36928072 未加载
chx将近 2 年前
&gt; And it just so happens that all local accounts in a Mastodon instance have a null value in their URI field, so they all matched.<p>How? NULL = NULL evaluates to FALSE, SQL is a three value logic, specifically Kleene&#x27;s weak three-valued logic, NULL anyoperator NULL is NULL.
评论 #36923099 未加载
ziml77将近 2 年前
How did accounts with a NULL value in the URI column match the query? NULL does not compare equal to NULL. Is this some awful Rails magic at work?
notresidenter将近 2 年前
&gt; 6 Users with symbols in their usernames couldn’t log in. This turned out to be due to a mistake I’d made in the recovery script, and was very easily fixed.<p>UTF-8 strikes again.
photoGrant将近 2 年前
Bad luck on timing? Feels like luck had little to do with it and migration testing wasn&#x27;t fuzz&#x27;d enough?
评论 #36921189 未加载
account42将近 2 年前
What kind of monster disables text selection on their blog. Absolutely unreadable.
评论 #37001940 未加载
ChrisArchitect将近 2 年前
This is a tough and crappy situation but that was an engaging read surprisingly! Nice one
AtlasBarfed将近 2 年前
Hm, so a distributed twitter runs into the challenge that each independently managed node is ... and independently managed node. Backup problems etc.<p>Centralized twitter improves its operations for all users over time. But can be purchased by a nutso billionaire on a whim, or subjected to the &quot;&quot;&quot;&quot;&quot;&quot;national security&quot;&quot;&quot;&quot;&quot;&quot; directives of the US Government.
评论 #36921447 未加载
评论 #36921154 未加载
评论 #36921240 未加载
评论 #36921141 未加载