惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
WordPress大学
WordPress大学
N
Netflix TechBlog - Medium
宝玉的分享
宝玉的分享
V
Visual Studio Blog
S
Securelist
P
Palo Alto Networks Blog
A
Arctic Wolf
T
Tor Project blog
P
Proofpoint News Feed
I
InfoQ
博客园 - 三生石上(FineUI控件)
T
Threat Research - Cisco Blogs
G
GRAHAM CLULEY
M
MIT News - Artificial intelligence
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Microsoft Security Blog
Microsoft Security Blog
MongoDB | Blog
MongoDB | Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
Apple Machine Learning Research
Apple Machine Learning Research
S
Secure Thoughts
Cyberwarzone
Cyberwarzone
Blog — PlanetScale
Blog — PlanetScale
Simon Willison's Weblog
Simon Willison's Weblog
博客园 - 【当耐特】
大猫的无限游戏
大猫的无限游戏
腾讯CDC
Latest news
Latest news
Project Zero
Project Zero
V
Vulnerabilities – Threatpost
Y
Y Combinator Blog
S
SegmentFault 最新的问题
Schneier on Security
Schneier on Security
C
CERT Recently Published Vulnerability Notes
W
WeLiveSecurity
罗磊的独立博客
Stack Overflow Blog
Stack Overflow Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
L
LINUX DO - 热门话题
N
News and Events Feed by Topic
PCI Perspectives
PCI Perspectives
C
Cisco Blogs
Application and Cybersecurity Blog
Application and Cybersecurity Blog
爱范儿
爱范儿
T
The Exploit Database - CXSecurity.com
The Last Watchdog
The Last Watchdog
人人都是产品经理
人人都是产品经理
GbyAI
GbyAI
Know Your Adversary
Know Your Adversary
U
Unit 42

Graphite blog

Introducing Code Tours: a new way to review Introducing Cursor Cloud Agents in Graphite Building the future of software development with Cursor Reimagining the PR Page: Designing for speed and focus Graphite changelog [11-20-2025] Graphite changelog [11-04-2025] Graphite changelog [10-16-2025] The future of engineering is collaborative (and already here) Meet Graphite Agent: the next evolution of AI code review Introducing frozen branches: A safer way to build on your teammates’ work Graphite changelog [09-17-2025] How we sped up code search for Graphite Chat Introducing Graphite Chat AI is writing code—here's why it also needs to review that code How I got Claude to write code I could actually ship How we built the first stack-aware merge queue (and why it matters) How we organize our monorepo to ship fast Graphite brings stacking to Tower Code review tooling: Should you build or buy? Making AI code review available to everyone Introducing: The new Graphite + Linear integration Graphite raises $52M and launches Diamond to reimagine code review for the age of AI Why AI will never replace human code review How stacked PRs unblock distributed development teams Graphite is going to Developer Week 2025 Beating the end of year code freeze How Graphite’s eng team ships code remarkably fast Why we chose Anthropic's Claude to power Graphite Reviewer AI code generation will remain fragmented How we redesigned Graphite's landing page in-house Introducing Graphite Reviewer: your AI code review companion How AI code review reduces review cycles to improve developer productivity What if you could get instant feedback on your code? The new developer toolchain Not Rocket Science - How Bors and Google’s TAP inspired modern merge queues Graphite's State of code review 2024 How Google migrated billions of lines of code from Perforce to Piper Going from 0 to 1: How to write better unit tests when there are none Speed up your merges: Parallel CI is now generally available for teams using Graphite’s merge queue Down for less than four minutes a month: how AWS deploys code BitKeeper, Linux, and licensing disputes: How Linus wrote Git in 14 days Graphite is now free for startups and open source projects Launch week wrap-up (May 2024) Reduce CI costs for Buildkite and GitHub Actions Cheaper CI & faster merging with batching How Google does code review The technical learning curve at a startup is gentler than you might think Graphite will now automatically rebase your partially-merged stacks Multiple engineers can now seamlessly collaborate on the same stack of PRs Do you ever outgrow GitHub? From the 80's to 2024 - how CI tests were invented and optimized Graphite changelog [4/10/2024] 🎺 Graphite changelog [4/25/2024] 🐸 How Stack Overflow replaced Experts Exchange How GitHub monopolized code hosting Graphite changelog [3/27/2024] 🤝 The core principles of building a good AI feature Onboarding roulette: deleting our employee accounts daily Graphite changelog [3/13/2024] 🚁 Why Facebook doesn’t use Git How to recreate the Phabricator code review workflow Types of code reviews: Improve performance, velocity, and quality What's the best GitHub pull request merge strategy? Phabricator vs GitHub vs Graphite: How do they stack up? Improving team velocity through better pull request practices Moving fast breaks things: the importance of a staging environment Building trust as a software engineer Keeping code simple: moving fast by avoiding over-engineering What's better than GitHub pull request filters? The Graphite pull request inbox 7 Best Phabricator alternatives for PR stacking + code review [2024] Accurate eng estimations: predicting and negotiating the future Tracking and understanding GitHub PR stats: A step-by-step guide 8 pull request best practices for optimal engineering What’s next for Graphite Graphite Q1 Launch week: Stacking with the tools you love Graphite Q1 Launch week: Making stacking seamless Accelerating code review The Mom Test How to use stacked PRs to unblock your entire team Graphite Q1 launch week 2024 The practical and philosophical problems with AI code review Empirically sup code review best practices Call site attribution: how to pinpoint rogue SQL queries throttling your performance Every engineer should understand git reflog Your GitHub pull request workflow is slowing everyone down Optimizing CI/CD workflows for trunk-based development Why we use AWS instead of Vercel to host our Next.js app How large pull requests slow down development 3 key lessons in application server optimization Trunk-based development: why you should stop using feature branches Git was built in 5 days Why large companies and fast-moving startups are banning merge commits How long should your CI take? Experimenting with AI code review CRA to AppRouter in 5 Steps: A case study with Graphite Graphite Changelog [10/18/2023] The comprehensive guide to writing the best PR title of all time How 10,000 Developers All Contribute to the same Repo
Post mortem: we took 124 seconds from you, here's 378 back
Greg Foster · 2023-12-07 · via Graphite blog

Cursor Cloud Agents are now in Graphite. Create, review, and ship without leaving your PR.

author

Greg Foster

Dec 6, 2023

If you haven’t seen the global headlines yet: Graphite had an outage.

In the interest of full transparency and accountability, I, Greg Foster, as the CTO and responding on-call engineer, want to give a full report of the incident, and reaffirm our commitment to our community and customers.

While Graphite was down for ~2 minutes, and you'll never get those valuable moments of your life back, in this article I will provide you with ~6 minutes of content. This nets out to a GAIN of 4 minutes, putting you back on top. Let's dive in.

Incident Overview:

  • Time and Duration: On December 6, 2023, at 2:13:26 PM EST, Graphite’s web application experienced an unexpected downtime lasting precisely 124 seconds.

  • Impact: Nearly a dozen users encountered a 404 error page when attempting to load new pages, particularly affecting the pull request functionality. This interruption temporarily hindered user code reviews while encouraging premature coffee breaks.

Affected surfaces:

Luckily, the issue was solely isolated to new page loads of the web application. Other key components of the Graphite ecosystem, such as asynchronous jobs, merge queues, the CLI tool, the VS Code extension, and the system tray application remained fully operational during this time. This maintained continuity in several backend and integrated services, thereby limiting the overall disruption to our users.

Initial detection:

The problem was first identified thousands of milliseconds into the incident, at precisely 2:13:26 PM EST by myself, Greg Foster, following a user report in the Graphite Community Slack channel.

Detailed timeline:

  • 2:13:35 PM: Adhering to my on-call duties, I promptly instructed Alyssa, another key software dev on our team, to update the Graphite status page to communicate the service disruption.

  • 2:13:37 PM: Concurrent with the status page update, belated PagerDuty alarms began firing, indicating a significant uptick in errors and triggering parasympathetic trauma responses across the room. The office was literally “abuzz” with vibrating phones, and apple watches warning of imminent cardiac arrest (see above).

  • 2:13:40 PM: Brendan, another Graphite engineer, began an exploration in the AWS console to identify and address the underlying issue.

  • 2:13:45 PM: Suspecting an anomaly with the S3 bucket serving the web application, I started battling through multiple of AWS’s “best-in-industry" login flows to access the AWS console. After only 16 redirects through different authentication portals, I was in.

  • 2:13:50 PM: Graphite’s internal Slack channels experienced a surge in activity, with employees reporting the 404 error, and users clamoring for answers in the community Slack. The ➕ emoji reacts to error reports, and dumpster fire gifs were frantically rolling in. It was now clear that this was a... widespread issue.

  • 2:14:30 PM: In the meantime, as I was handling the slack meltdown, Brendan successfully identified a misconfiguration in the S3 bucket settings and proceeded to revert the changes, effectively restoring site functionality.

  • 2:14:40 PM: Following the resolution, site performance returned to normal, and blood pressure readings finally fell below the “fatal hypertension” level. Benchmarks across the board were looking good.

  • 2:14:50 PM: Brendan reminded me of what I said in our 1:1 this morning: “Wow, it’s been so long since we had any kind of outage!” Thank you Brendan.

  • 2:15:40 PM: I updated the community on Slack regarding the resolution and shared a brief explanation of the incident.

Root cause analysis:

  • Precursor event: My presentation on the preceding day at 4:50 PM EST, highlighting the exceptional uptime in November, inadvertently angering the SRE gods and cursing the team with subsequent downtime.

  • Immediate cause: The downtime was initiated by an unintended change to the S3 production bucket configuration at approximately 2:12:35 PM EST, causing CloudFront to serve 404 errors.

The issue was promptly addressed by reverting the changes to the S3 bucket configuration.

Future corrective actions:

  • Graphite will encourage a new internal policy requiring testing of configuration changes in a staging environment prior to production deployment.

  • Add linter warning to caution against making verbal jinxing statements about system reliability.

Acknowledgments:

  • First, I want to extend my sincere thanks to our engineering team for their rapid and effective response to this incident.

  • I also deeply appreciate our community members on Slack who quickly reported the issue and showed tremendous support throughout the incident.

  • And thank you, the reader, for making it to the end of the report, hopefully learning from our experience along the way.

Related articles