{"id":12246,"date":"2026-06-02T12:15:36","date_gmt":"2026-06-02T19:15:36","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/cosmosdb\/?p=12246"},"modified":"2026-06-02T08:56:19","modified_gmt":"2026-06-02T15:56:19","slug":"announcing-the-general-availability-of-per-partition-automatic-failover-for-azure-cosmos-db-nosql","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/cosmosdb\/announcing-the-general-availability-of-per-partition-automatic-failover-for-azure-cosmos-db-nosql\/","title":{"rendered":"Announcing the General Availability of Per Partition Automatic Failover for Azure Cosmos DB NoSQL"},"content":{"rendered":"<p>Today, we are excited to announce the General Availability of Per Partition Automatic Failover (PPAF) for Azure Cosmos DB NoSQL API. PPAF is a significant advancement in how Azure Cosmos DB delivers availability and resilience for mission-critical workloads running on single-write-region accounts.<\/p>\n<p>If you rely on Azure Cosmos DB to be always on for your mission-critical applications \u2014 PPAF is built for you.<\/p>\n<p>With PPAF, Azure Cosmos DB can automatically recover affected partitions by failing\u00a0over writes\u00a0to a secondary region within 3 minutes at P99, without requiring application changes.<\/p>\n<h3>A smarter, more granular failover<\/h3>\n<p>Azure Cosmos DB already supports active-active deployments through multi-region writes. With PPAF, you can now achieve an active-active architecture on a single-write-region account by allowing individual partitions to fail over to other regions automatically, while preserving your configured consistency level.<\/p>\n<p>Traditionally, if your account&#8217;s write region experienced an outage, Azure Cosmos DB had to fail over the entire account to a secondary region, which is complex and requires time. PPAF makes geo-failover automatic and far more agile by performing failovers at the partition level. If a partition-set in the preferred write region has an outage, PPAF automatically promotes another region as the new write region for that partition-set. Unaffected partitions continue writing to the preferred region without interruption. When the original write region recovers, the system detects the recovery,\u00a0initiates\u00a0a failback to the preferred region, and automatically reconciles any data changes during the process.<\/p>\n<p><figure id=\"attachment_10174\" aria-labelledby=\"figcaption_attachment_10174\" class=\"wp-caption aligncenter\" ><a href=\"https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-content\/uploads\/sites\/52\/2025\/05\/ppaf-pic4.png\"><img decoding=\"async\" class=\"wp-image-10174 size-large\" src=\"https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-content\/uploads\/sites\/52\/2025\/05\/ppaf-pic4-1024x447.png\" alt=\"Active-Active deployments using multi-writer and PPAF. \" width=\"1024\" height=\"447\" srcset=\"https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-content\/uploads\/sites\/52\/2025\/05\/ppaf-pic4-1024x447.png 1024w, https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-content\/uploads\/sites\/52\/2025\/05\/ppaf-pic4-300x131.png 300w, https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-content\/uploads\/sites\/52\/2025\/05\/ppaf-pic4-768x335.png 768w, https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-content\/uploads\/sites\/52\/2025\/05\/ppaf-pic4-1536x671.png 1536w, https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-content\/uploads\/sites\/52\/2025\/05\/ppaf-pic4-2048x894.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption id=\"figcaption_attachment_10174\" class=\"wp-caption-text\">Active-Active deployments using multi-writer and PPAF.<\/figcaption><\/figure><\/p>\n<h3>Use cases PPAF enables<\/h3>\n<p><strong>Mission-critical applications that cannot tolerate write downtime.<\/strong> Payments, order management, real-time gaming, ride-hailing, and IoT ingestion workloads where every minute of write unavailability has a direct business impact. With sub-three-minute RTO at P99, regional incidents become a non-event for most of your users.<\/p>\n<p><strong>Single-write-region workloads that need multi-region resiliency.<\/strong> Customers who previously considered multi-write regions purely for availability \u2014 but did not want to design and operate conflict resolution logic \u2014 can now achieve a comparable resiliency profile without that complexity.<\/p>\n<p><strong>Workloads with strict consistency requirements.<\/strong> Financial systems, ledgers, and inventory platforms running on Strong consistency maintain RPO = 0 through a PPAF failover. Your consistency contract is honored end-to-end.<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-content\/uploads\/sites\/52\/2026\/05\/ppaf-scenarios.png\"><img decoding=\"async\" class=\"alignnone size-large wp-image-12395\" src=\"https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-content\/uploads\/sites\/52\/2026\/05\/ppaf-scenarios-1024x682.png\" alt=\"Per Partition Automatic Failover scenarios\" width=\"1024\" height=\"682\" srcset=\"https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-content\/uploads\/sites\/52\/2026\/05\/ppaf-scenarios-1024x682.png 1024w, https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-content\/uploads\/sites\/52\/2026\/05\/ppaf-scenarios-300x200.png 300w, https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-content\/uploads\/sites\/52\/2026\/05\/ppaf-scenarios-768x512.png 768w, https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-content\/uploads\/sites\/52\/2026\/05\/ppaf-scenarios.png 1430w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<h3>Near-instant recovery during outages<\/h3>\n<p>Partition failover is granular and designed to complete within 3 minutes at P99,\u00a0representing\u00a0a significant improvement over traditional account-level failover.<\/p>\n<p>In practice, Azure Cosmos DB accounts with PPAF enabled have\u00a0maintained\u00a0write availability during partial regional disruptions, with affected partitions redirecting writes to secondary regions within minutes.<\/p>\n<h3>Transparent to your application<\/h3>\n<p>Your application does not need\u00a0additional\u00a0logic to take advantage of PPAF. You continue writing to your Azure Cosmos DB account endpoint as usual. Behind the scenes, the Azure Cosmos DB SDKs handle redirection when a partition failover occurs, and your application automatically retries writes to the new write region for that partition. No code changes are\u00a0required\u00a0beyond upgrading to a supported SDK version and enabling the feature on your account.<\/p>\n<p><iframe src=\"\/\/www.youtube.com\/embed\/0N3qgdlIMqw\" width=\"560\" height=\"314\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<h3>What is new at General Availability<\/h3>\n<p>Since preview, we have expanded PPAF across the areas customers asked for:<\/p>\n<ul>\n<li><strong>Broader consistency support.<\/strong> Strong, Session, Consistent Prefix, and Eventual consistency levels are supported at GA. Bounded Staleness is on the roadmap.<\/li>\n<li><strong>Multi-language SDK coverage:<\/strong>\n<ul>\n<li>.NET v3 v3.60.0 or later<\/li>\n<li>Java v4 v4.79.0 or later<\/li>\n<li>Python SDK v4.16.0 or later<\/li>\n<li>Node.js SDK v4.7.0 or later<\/li>\n<\/ul>\n<\/li>\n<li><strong>Production observability.<\/strong> A new <code>PartitionWriteGlobalStatus<\/code> metric shows the number of partitions writing in each region at any point in time.<\/li>\n<li><strong>Resilience defaults.<\/strong> Per-Partition Circuit Breaker and Read Hedging are enabled by default for PPAF-enabled accounts, with configurable thresholds.<\/li>\n<li><strong>Chaos simulation kit.<\/strong> A <a href=\"https:\/\/github.com\/AzureCosmosDB\/ppaf-samples\">sample application<\/a> allows you to inject partition-level faults and validate failover behavior safely.<\/li>\n<li><strong>Pricing.<\/strong> PPAF is included as part of the Azure Cosmos DB Business Critical service tier.<\/li>\n<\/ul>\n<p><strong>Enable Per Partition Automatic Failover<\/strong><\/p>\n<p>PPAF is available for Azure Cosmos DB for NoSQL accounts that meet the prerequisites. To get started:<\/p>\n<ol>\n<li><strong>Upgrade your SDK<\/strong> to a supported version as described in the SDK support section above.<\/li>\n<li>Enable the feature via Features blade in the Account level settings<\/li>\n<\/ol>\n<p>Step-by-step instructions are available in the <a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/cosmos-db\/how-to-configure-per-partition-automatic-failover\">how-to guide<\/a>.<\/p>\n<p>With Per Partition Automatic Failover, Azure Cosmos DB redefines how single-write-region applications achieve resilience. By combining partition-level failover, preserved consistency, and recovery within 3 minutes at P99, you can build always-on applications without added complexity. We\u2019re excited to see how you use PPAF to raise the bar for availability in your workloads.<\/p>\n<h3>Learn more and provide feedback<\/h3>\n<p>To dive deeper, explore the feature documentation and resources below:<\/p>\n<ul>\n<li>How-to: <a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/cosmos-db\/how-to-configure-per-partition-automatic-failover\"><em>Configure and use Per Partition Automatic Failover<\/em><\/a><\/li>\n<li><a href=\"https:\/\/github.com\/AzureCosmosDB\/ppaf-samples\">Samples and chaos simulation kit<\/a><\/li>\n<li><a href=\"https:\/\/arxiv.org\/abs\/2505.14900\"><em>Implementing Decentralized Per-Partition Automatic Failover in Azure Cosmos DB<\/em><\/a><\/li>\n<li><a href=\"https:\/\/azure.microsoft.com\/en-us\/pricing\/details\/cosmos-db\/autoscale-provisioned\/\">Azure Cosmos DB pricing<\/a><\/li>\n<\/ul>\n<h2 id=\"about-azure-cosmos-db\"><strong>About Azure Cosmos DB<\/strong><\/h2>\n<p>Azure Cosmos DB is a fully managed and serverless NoSQL and vector database for modern app development, including AI applications. With its SLA-backed speed and availability as well as instant dynamic scalability, it is ideal for real-time NoSQL and MongoDB applications that require high performance and distributed computing over massive volumes of NoSQL and vector data.<\/p>\n<p>To stay in the loop on Azure Cosmos DB updates, follow us on\u00a0<a href=\"https:\/\/twitter.com\/AzureCosmosDB\" target=\"_blank\" rel=\"noopener\">X<\/a>,\u00a0<a href=\"https:\/\/aka.ms\/AzureCosmosDBYouTube\" target=\"_blank\" rel=\"noopener\">YouTube<\/a>, and\u00a0<a href=\"https:\/\/www.linkedin.com\/company\/azure-cosmos-db\/\" target=\"_blank\" rel=\"noopener\">LinkedIn<\/a>.\u00a0 Join the discussion with other developers on the\u00a0<a href=\"https:\/\/discord.gg\/pczdC2SU\" target=\"_blank\" rel=\"noopener\">#nosql channel on the Microsoft Open Source Discord<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today, we are excited to announce the General Availability of Per Partition Automatic Failover (PPAF) for Azure Cosmos DB NoSQL API. PPAF is a significant advancement in how Azure Cosmos DB delivers availability and resilience for mission-critical workloads running on single-write-region accounts. If you rely on Azure Cosmos DB to be always on for your [&hellip;]<\/p>\n","protected":false},"author":189973,"featured_media":12494,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[14],"tags":[],"class_list":["post-12246","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-core-sql-api"],"acf":[],"blog_post_summary":"<p>Today, we are excited to announce the General Availability of Per Partition Automatic Failover (PPAF) for Azure Cosmos DB NoSQL API. PPAF is a significant advancement in how Azure Cosmos DB delivers availability and resilience for mission-critical workloads running on single-write-region accounts. If you rely on Azure Cosmos DB to be always on for your [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-json\/wp\/v2\/posts\/12246","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-json\/wp\/v2\/users\/189973"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-json\/wp\/v2\/comments?post=12246"}],"version-history":[{"count":2,"href":"https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-json\/wp\/v2\/posts\/12246\/revisions"}],"predecessor-version":[{"id":12510,"href":"https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-json\/wp\/v2\/posts\/12246\/revisions\/12510"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-json\/wp\/v2\/media\/12494"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-json\/wp\/v2\/media?parent=12246"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-json\/wp\/v2\/categories?post=12246"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-json\/wp\/v2\/tags?post=12246"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}