Files
nexus/sreweekly/articles/473/07-a-trip-down-memory-lane-how-we-resolved-a-memory-leak-when-pprof-faile.html
2026-09-12 17:23:01 +08:00

681 lines
139 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html><!-- Last Published: Wed Sep 02 2026 15:21:56 GMT+0000 (Coordinated Universal Time) --><html data-wf-domain="www.warpstream.com" data-wf-page="683882630fceea3de6f5774a" data-wf-site="683882630fceea3de6f5776a" data-wf-intellimize-customer-id="117369721" lang="en" data-wf-collection="683882630fceea3de6f57778" data-wf-item-slug="a-trip-down-memory-lane-how-we-resolved-a-memory-leak-when-pprof-failed-us"><head><meta charset="utf-8"/><link href="https://cdn.prod.website-files.com" rel="preconnect" crossorigin="anonymous"/><title>A Trip Down Memory Lane: How We Resolved a Memory Leak When pprof Failed Us - WarpStream</title><meta content="When pprof hit its limits, WarpStream used gcore and viewcore to trace a goroutine leak in our control plane. A Go debugging guide for distributed systems." name="description"/><meta content="A Trip Down Memory Lane: How We Resolved a Memory Leak When pprof Failed Us" property="og:title"/><meta content="Pprof is an amazing tool for debugging memory leaks, but what about when it&#x27;s not enough? Read about how we used gcore and viewcore to hunt a particularly nasty memory leak in a large distributed system." property="og:description"/><meta content="https://cdn.prod.website-files.com/683882630fceea3de6f57776/6a971adc6aa66e74efa0b52a_6a9719f49d7225137157ecf5_A%2520Trip%2520Down%2520Memory%2520Lane.png" property="og:image"/><meta content="A Trip Down Memory Lane: How We Resolved a Memory Leak When pprof Failed Us" name="twitter:title"/><meta content="Pprof is an amazing tool for debugging memory leaks, but what about when it&#x27;s not enough? Read about how we used gcore and viewcore to hunt a particularly nasty memory leak in a large distributed system." name="twitter:description"/><meta content="https://cdn.prod.website-files.com/683882630fceea3de6f57776/6a971adc6aa66e74efa0b52a_6a9719f49d7225137157ecf5_A%2520Trip%2520Down%2520Memory%2520Lane.png" name="twitter:image"/><meta property="og:type" content="website"/><meta content="summary_large_image" name="twitter:card"/><meta content="width=device-width, initial-scale=1" name="viewport"/><link href="https://cdn.prod.website-files.com/683882630fceea3de6f5776a/css/warbd8f8uhb.shared.be08c4ab5.min.css" rel="stylesheet" type="text/css" integrity="sha384-vgjEq11hR6opnXX7duXfRbdU2ZfatA8qt4vC5mg/hTRB1iV1qB/ZuWqVCycmnlcI" crossorigin="anonymous"/><script type="text/javascript">!function(o,c){var n=c.documentElement,t=" w-mod-";n.className+=t+"js",("ontouchstart"in o||o.DocumentTouch&&c instanceof DocumentTouch)&&(n.className+=t+"touch")}(window,document);</script><link href="https://cdn.prod.website-files.com/683882630fceea3de6f5776a/683882630fceea3de6f577d4_Group%20236.png" rel="shortcut icon" type="image/x-icon"/><link href="https://cdn.prod.website-files.com/683882630fceea3de6f5776a/683882630fceea3de6f577cf_Group%20237.png" rel="apple-touch-icon"/><link href="https://www.warpstream.com/blog/a-trip-down-memory-lane-how-we-resolved-a-memory-leak-when-pprof-failed-us" rel="canonical"/><style>.anti-flicker, .anti-flicker * {visibility: hidden !important; opacity: 0 !important;}</style><style>[data-wf-hidden-variation], [data-wf-hidden-variation] * {
display: none !important;
}</style><link href="rss.xml" rel="alternate" title="RSS Feed" type="application/rss+xml"/><!-- OneTrust Cookies Consent Notice start for warpstream.com -->
<script src="https://cdn.cookielaw.org/scripttemplates/otSDKStub.js" type="text/javascript" charset="UTF-8" data-domain-script="019dac0b-c1bd-7f2c-b456-8a5320d13577"></script>
<script type="text/javascript">
function OptanonWrapper() { }
</script>
<!-- OneTrust Cookies Consent Notice end for warpstream.com -->
<style>
* { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; -o-font-smoothing: antialiased; }
::selection {background-color: #F4F2FD;color: rgba(58, 33, 237, 1);}
body, a { -webkit-tap-highlight-color: transparent !important; }
img { overflow: clip !important; }
textarea { resize: none; }
video:focus { outline:none !important; }
.shadbut {box-shadow: 0px 1px 1px -0.5px rgba(42, 51, 69, 0.04), 0px 3px 3px -1.5px rgba(42, 51, 70, 0.04), 0px 6px 6px -3px rgba(42, 51, 70, 0.04), 0px 12px 12px -6px rgba(14, 63, 126, 0.04), 0px 24px 24px -12px rgba(14, 63, 126, 0.04); }
</style>
<link
rel="preload"
href="https://cdn.prod.website-files.com/683882630fceea3de6f5776a/683882630fceea3de6f5779c_PlusJakartaSans-Bold.woff2"
as="font"
type="font/woff2"
crossorigin="anonymous"
/>
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"Organization","name":"WarpStream","url":"https://www.warpstream.com","logo":"https://cdn.prod.website-files.com/683882630fceea3de6f5776a/683882630fceea3de6f577d4_Group%20236.png","description":"Diskless, Kafka-compatible data streaming platform built on object storage.","parentOrganization":{"@type":"Organization","name":"Confluent"},"sameAs":["https://bsky.app/profile/warpstream.com"]}
</script>
<!-- Other Stuff -->
<meta name="zoom-domain-verification" content="ZOOM_verify_eu7OjDkQ2dHTb9npstfpNH">
<meta name="facebook-domain-verification" content="bupb27hskj2myemjewef1b54ul7xon" />
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-MF9MRLCR');</script>
<!-- End Google Tag Manager -->
<meta name="msvalidate.01" content="3BB081DA3E69E73D260B566AB2DA43F0" /><meta property="og:type" content="article" />
<meta property="article:author" content="WarpStream" />
<!-- [Attributes by Finsweet] Table of Contents -->
<script defer src="https://cdn.jsdelivr.net/npm/@finsweet/attributes-toc@1/toc.js"></script>
<!-- [Attributes by Finsweet] Powerful Rich Text -->
<script defer src="https://cdn.jsdelivr.net/npm/@finsweet/attributes-richtext@1/richtext.js"></script>
<!-- [Attributes by Finsweet] Code Highlight -->
<script async src="https://cdn.jsdelivr.net/npm/@finsweet/attributes-codehighlight@1/codehighlight.js"></script>
<!-- Finsweet Attributes -->
<script async type="module"
src="https://cdn.jsdelivr.net/npm/@finsweet/attributes@2/attributes.js"\
fs-readtime></script>
<style>
p {
word-break: break-word;
}
.w-richtext-figure-type-video {
border: 1px solid #ddd;
border-radius: 6px;
overflow: hidden;
box-shadow: 0px 1px 1px rgba(3, 7, 18, 0.04),
0px 5px 4px rgba(3, 7, 18, 0.03),
0px 12px 9px rgba(3, 7, 18, 0.02),
0px 20px 15px rgba(3, 7, 18, 0.02),
0px 32px 24px rgba(3, 7, 18, 0.01);
}
figcaption {
font-size: 0.8rem;
padding-top: 0.7rem;
padding-left: 6%;
padding-right: 6%;
color: #666;
display: block;
font-family: 'Plus Jakarta Sans';
}
.sup a {
text-decoration: none !important;
}
.notes{
border-radius: 8px;
padding: 40px;
border: 1px solid #ddd;
box-shadow: 0px 5px rgba(0,0,0,.05);
font-size: 14px;
margin-bottom: 40px;
font-family: 'Plus Jakarta Sans';
}
pre {
margin: 0 !important;
padding: 0 !important;
border: none !important;
font-size: inherit !important;
font-family: inherit !important;
line-height: inherit !important;
background: none !important;
box-shadow: none !important;
border-radius: 0 !important;
white-space: break-spaces;
}
code {
border: 1px solid #ddd !important;
border-radius: 6px;
margin-top: 1.5rem;
background: #fff !important;
padding: 2rem !important;
box-shadow: inset 5px 5px #270b460d;
line-height: 1.3rem;
font-size: .8rem !important;
word-break: break-all;
}
.outblock {
border: 1px solid #ddd !important;
margin-top: 1.5rem;
border-radius: 6px;
padding: 2rem 2rem 1.5rem 2rem !important;
font-family: 'Roboto Mono', monospace;
font-size: .8rem !important;
background: transparent;
word-break: break-all;
}
.codeinline {
font-family: 'Roboto Mono', monospace;
font-size: .8rem;
font-weight: 400;
background: rgb(235 230 255 / 80%);
padding: 0.16rem 0.4rem;
margin-bottom: -2px;
color: #3a21ed;
margin-left: .1rem;
line-height: 1rem;
margin-right: .1rem;
display: inline-block;
border-radius: 4px;
word-break: break-word;
}
.codeinlinemb{
font-family: 'Roboto Mono', monospace;
font-size: .8rem;
font-weight: 400;
background: rgb(235 230 255 / 80%);
padding: 0.16rem 0.4rem;
margin-bottom: -2px;
color: #3a21ed;
margin-left: .1rem;
line-height: 1rem;
margin-right: .1rem;
display: inline-block;
border-radius: 4px;
word-break: break-word;
margin-bottom: 1rem;
}
#player, .player {
border: 1px solid #ddd !important;
border-radius: 6px !important;
}
@media screen and (max-width: 900px) {
.w-richtext ol, .w-richtext ul {
max-width: 20rem;
}
code {
word-break: break-word;
}
.codeinline{
font-size: 70%;
word-break: break-word;
}
.codeinlinemb{
font-size: 70%;
word-break: break-word;
}
}
</style>
<link rel="alternate" type="application/rss+xml" href="https://www.warpstream.com/blog/rss.xml">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "A Trip Down Memory Lane: How We Resolved a Memory Leak When pprof Failed Us",
"image": "https://cdn.prod.website-files.com/683882630fceea3de6f57776/6a971adc6aa66e74efa0b52a_6a9719f49d7225137157ecf5_A%2520Trip%2520Down%2520Memory%2520Lane.png",
"description": "When pprof hit its limits, WarpStream used gcore and viewcore to trace a goroutine leak in our control plane. A Go debugging guide for distributed systems.",
"author": {
"@type": "Organization",
"name": "WarpStream"
},
"publisher": {
"@type": "Organization",
"name": "WarpStream Labs",
"logo": {
"@type": "ImageObject",
"url": "https://cdn.prod.website-files.com/648b6360221506ec267256ae/681a210401c913a2aeeb2b53_logo.png"
}
},
"datePublished": "Sep 02, 2026",
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "a-trip-down-memory-lane-how-we-resolved-a-memory-leak-when-pprof-failed-us"
}
}
</script></head><body data-scroll-time="0.1" class="mainbody"><div id="top" class="navfamily"><div class="div-block-631"><div class="div-block-635"><div class="splark"><div id="bannerspark" class="bannerspark w-embed w-script"><!-- Elfsight Announcement Bar | Executive Summary Sticky Header -->
<script src="https://elfsightcdn.com/platform.js" async></script>
<div class="elfsight-app-b7369716-34bc-4fe0-ba35-5207f9435fc8" data-elfsight-app-lazy></div>
<script>
(function() {
const targetDiv = document.querySelector('.splark');
if (!targetDiv) return;
targetDiv.style.transition = 'margin-top 0.15s ease';
function updateBanner() {
const openedBanner = document.querySelector('.es-announcement-bar-opened');
if (openedBanner && openedBanner.offsetHeight > 0) {
const rect = openedBanner.getBoundingClientRect();
const isAtTop = rect.top >= 0;
openedBanner.style.transition = 'opacity 0.15s ease';
openedBanner.style.opacity = isAtTop ? '1' : '0';
targetDiv.style.setProperty('margin-top', isAtTop ? '45px' : '0', 'important');
} else {
targetDiv.style.setProperty('margin-top', '0', 'important');
}
}
window.addEventListener('scroll', updateBanner, { passive: true });
// On any mutation, check a few times quickly to catch animations
const observer = new MutationObserver(() => {
updateBanner();
setTimeout(updateBanner, 100);
setTimeout(updateBanner, 300);
});
observer.observe(document.body, { childList: true, subtree: true, attributes: true });
updateBanner();
setTimeout(updateBanner, 2000);
})();</script>
<style>
@media (max-width: 1050px) {
[class*="bar__BarContainer-sc"] {
display: none !important;
}
}
</style></div></div><div class="div-block-633"><div data-animation="default" class="navbar5_component w-nav" data-easing2="ease" fs-scrolldisable-element="smart-nav" data-easing="ease" data-collapse="medium" data-w-id="e11dc28f-a971-eb88-d46e-f2fcc7e60ed6" role="banner" data-duration="400"><div class="navbar5_container"><a href="/" class="navbar5_logo-link w-nav-brand"><div class="code-embed-7 w-embed"><svg width="219" height="44" viewBox="0 0 219 45" style="height: 1.5rem; width: auto;" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M48.1214 42.6066C47.3036 42.6066 46.9701 42.1063 46.8867 41.4418H46.8167C46.5128 42.3161 45.7488 42.7734 44.7508 42.7734C43.2389 42.7734 42.3512 41.9422 42.3512 40.6079C42.3512 39.2736 43.3223 38.5123 45.4045 38.5123H46.8194V37.8048C46.8194 36.7906 46.2653 36.2365 45.1274 36.2365C44.2665 36.2365 43.6989 36.6535 43.3089 37.3045L42.6417 36.6804C43.0291 35.9164 43.8899 35.2788 45.1812 35.2788C46.9028 35.2788 47.9277 36.18 47.9277 37.6918V41.6328H48.7455V42.6039H48.1214V42.6066ZM46.8167 40.5272V39.3489H45.3453C44.0836 39.3489 43.5133 39.7363 43.5133 40.4303V40.7209C43.5133 41.4284 44.0675 41.8319 44.9283 41.8319C46.0232 41.8319 46.8141 41.2616 46.8141 40.5272H46.8167Z" fill="currentcolor"/>
<path d="M50.3972 42.6066V35.4483H51.5082V36.6131H51.5647C51.9117 35.8088 52.5224 35.2815 53.5904 35.2815C55.0618 35.2815 55.9899 36.2795 55.9899 38.0146V42.6066H54.8789V38.2083C54.8789 36.9332 54.3247 36.2795 53.2568 36.2795C52.3691 36.2795 51.5082 36.7234 51.5082 37.638V42.6066H50.3972Z" fill="currentcolor"/>
<path d="M60.7917 42.6066V41.6354H62.1502V33.8934H60.7917V32.9222H64.6762V33.8934H63.3177V41.6354H64.6762V42.6066H60.7917Z" fill="currentcolor"/>
<path d="M66.8687 32.9222H70.8501C72.4453 32.9222 73.4298 33.9068 73.4298 35.4186C73.4298 36.9305 72.4991 37.3743 71.8615 37.4712V37.5546C72.5556 37.5949 73.7634 38.1921 73.7634 39.8035C73.7634 41.4149 72.6955 42.6066 71.267 42.6066H66.8687V32.9222ZM68.0335 37.1134H70.7102C71.6248 37.1134 72.1816 36.6265 72.1816 35.7684V35.2976C72.1816 34.4368 71.6275 33.9525 70.7102 33.9525H68.0335V37.1161V37.1134ZM68.0335 41.5816H70.9065C71.9046 41.5816 72.5152 41.0544 72.5152 40.0833V39.6125C72.5152 38.6414 71.9046 38.1141 70.9065 38.1141H68.0335V41.5843V41.5816Z" fill="currentcolor"/>
<path d="M75.9988 32.9222H77.5537L80.3299 38.1383H80.3998L83.1894 32.9222H84.6878V42.6066H83.5499V34.4475H83.48L82.6622 36.0696L80.346 40.2877L78.0298 36.0696L77.212 34.4475H77.1421V42.6066H76.0042V32.9222H75.9988Z" fill="currentcolor"/>
<path d="M89.6376 37.8209C89.6376 34.5874 91.0956 32.7555 93.5355 32.7555C95.1442 32.7555 96.2552 33.5329 96.8659 34.878L95.9217 35.4456C95.5343 34.4476 94.7273 33.7939 93.5355 33.7939C91.8704 33.7939 90.8858 35.112 90.8858 37.0973V38.5392C90.8858 40.5245 91.8704 41.7296 93.5355 41.7296C94.7703 41.7296 95.6177 41.0356 96.005 39.9811L96.9331 40.5648C96.3225 41.9233 95.1442 42.7707 93.5329 42.7707C91.0903 42.7707 89.6349 41.049 89.6349 37.8182L89.6376 37.8209Z" fill="currentcolor"/>
<path d="M98.1705 39.0288C98.1705 36.753 99.4887 35.2815 101.404 35.2815C103.319 35.2815 104.638 36.753 104.638 39.0288C104.638 41.3046 103.319 42.7761 101.404 42.7761C99.4887 42.7761 98.1705 41.3046 98.1705 39.0288ZM103.443 39.5399V38.5123C103.443 37.0005 102.596 36.2661 101.404 36.2661C100.212 36.2661 99.3649 37.0005 99.3649 38.5123V39.5399C99.3649 41.0517 100.212 41.7888 101.404 41.7888C102.596 41.7888 103.443 41.0544 103.443 39.5399Z" fill="currentcolor"/>
<path d="M106.537 42.6066V35.4483H107.648V36.6131H107.704C108.024 35.8787 108.522 35.2815 109.633 35.2815C110.577 35.2815 111.438 35.7119 111.825 36.7395H111.852C112.116 35.9621 112.81 35.2815 114.031 35.2815C115.489 35.2815 116.361 36.2795 116.361 38.0146V42.6066H115.25V38.2083C115.25 36.9467 114.766 36.2795 113.682 36.2795C112.807 36.2795 112.003 36.7234 112.003 37.638V42.6066H110.892V38.2083C110.892 36.9332 110.405 36.2795 109.351 36.2795C108.476 36.2795 107.645 36.7234 107.645 37.638V42.6066H106.534H106.537Z" fill="currentcolor"/>
<path d="M118.72 35.4483H119.831V36.6131H119.888C120.262 35.7119 120.999 35.2815 121.983 35.2815C123.772 35.2815 124.897 36.7395 124.897 39.0288C124.897 41.3181 123.772 42.7761 121.983 42.7761C120.999 42.7761 120.318 42.3322 119.888 41.4445H119.831V45.3855H118.72V35.451V35.4483ZM123.702 39.6368V38.4154C123.702 37.1403 122.925 36.2795 121.677 36.2795C120.665 36.2795 119.831 36.8633 119.831 37.6542V40.3173C119.831 41.2481 120.662 41.7754 121.677 41.7754C122.925 41.7754 123.702 40.9145 123.702 39.6394V39.6368Z" fill="currentcolor"/>
<path d="M132.042 42.6066C131.224 42.6066 130.89 42.1063 130.807 41.4418H130.737C130.43 42.3161 129.669 42.7734 128.668 42.7734C127.156 42.7734 126.269 41.9422 126.269 40.6079C126.269 39.2736 127.24 38.5123 129.322 38.5123H130.737V37.8048C130.737 36.7906 130.183 36.2365 129.045 36.2365C128.184 36.2365 127.616 36.6535 127.226 37.3045L126.559 36.6804C126.946 35.9164 127.807 35.2788 129.099 35.2788C130.82 35.2788 131.845 36.18 131.845 37.6918V41.6328H132.663V42.6039H132.039L132.042 42.6066ZM130.737 40.5272V39.3489H129.265C128.004 39.3489 127.433 39.7363 127.433 40.4303V40.7209C127.433 41.4284 127.988 41.8319 128.848 41.8319C129.943 41.8319 130.734 41.2616 130.734 40.5272H130.737Z" fill="currentcolor"/>
<path d="M134.317 42.6066V35.4483H135.428V36.6131H135.485C135.832 35.8088 136.442 35.2815 137.51 35.2815C138.982 35.2815 139.91 36.2795 139.91 38.0146V42.6066H138.799V38.2083C138.799 36.9332 138.245 36.2795 137.177 36.2795C136.289 36.2795 135.428 36.7234 135.428 37.638V42.6066H134.317Z" fill="currentcolor"/>
<path d="M146.568 35.4482H147.663L144.459 44.2717C144.139 45.1326 143.848 45.3828 142.794 45.3828H142.223V44.4116H143.348L143.889 42.8863L141.212 35.4482H142.323L144.045 40.3173L144.378 41.4821H144.448L144.836 40.3173L146.571 35.4482H146.568Z" fill="currentcolor"/>
<path d="M1.905 13.4288L1.27116 14.0904L0 15.4172V15.6464L1.27116 16.9749L3.17269 18.9615V12.1038L1.905 13.4253V13.4288Z" fill="#E32645"/>
<path d="M6.3506 14.4082L5.07944 13.085V10.1085L4.4074 10.8066V12.3852L3.80481 11.7583V19.6231L5.07944 20.9603V20.9568L5.71329 21.6184L6.98445 22.9469V8.1167L6.35408 8.77485L6.3506 14.4065V14.4082Z" fill="#E32645"/>
<path d="M10.1571 12.6282L8.88771 13.9567V9.19854V6.12483L8.25213 6.78993V8.53517L8.2556 14.6183L7.61655 15.2852V23.15L9.52329 21.1565L10.7944 19.828V4.133L10.1554 4.79983V12.63L10.1571 12.6282Z" fill="#E32645"/>
<path d="M13.9706 8.6446L12.6995 9.9748V2.14466L12.0604 2.8115V10.6364L11.4301 11.3015V19.1681L12.6995 17.8379L13.3385 17.1711V17.1763L14.608 15.8496V0.149353L13.9689 0.816191L13.9724 8.6446H13.9706Z" fill="#E32645"/>
<path d="M18.0967 3.12409L17.7806 2.79241V10.6347L16.5095 9.30624V1.42574L16.1952 1.09753V1.13747L15.8791 0.805786L15.8756 8.6394L15.2401 7.97951V15.8374L16.5095 17.1642L17.1433 17.8258L18.418 19.1577V3.41757L18.0984 3.08415V3.12409H18.0967Z" fill="#E32645"/>
<path d="M21.9067 7.10949L21.5906 6.77259V8.55604L21.5872 14.0835V14.6166L20.9516 13.9515L20.3177 13.2899V5.40939L19.9965 5.0725V5.11244L19.6856 4.78076V12.6231L19.0466 11.9614V19.8194L20.3177 21.1496L20.9516 21.8112L22.221 23.1379V7.39776L21.9067 7.06955V7.10949Z" fill="#E32645"/>
<path d="M26.0293 11.3484L25.3989 10.6937V12.4303L24.1277 13.757V9.37569L23.4939 8.72101V8.73316L23.4974 14.4134L22.8566 15.082V22.9469L24.1277 21.6184L24.7616 20.9568V20.9603L26.0327 19.6283V18.7323L26.0293 11.3832V11.3467V11.3484Z" fill="#E32645"/>
<path d="M28.5716 13.9793V13.9828L27.9412 13.3298L26.67 12.0118V18.9615L27.9412 17.6365V17.633L28.5716 16.9749L29.8427 15.6464V15.3008L28.5716 13.9793Z" fill="#E32645"/>
<path d="M194.779 22.9643V6.55727H198.054V10.1051L197.629 9.55978C197.973 8.44838 198.6 7.60789 199.51 7.04177C200.42 6.47565 201.462 6.1926 202.634 6.1926C203.948 6.1926 205.11 6.54685 206.121 7.25363C207.152 7.94131 207.84 8.86169 208.182 10.013L207.211 10.1033C207.696 8.78875 208.434 7.80933 209.425 7.16159C210.436 6.51386 211.589 6.19086 212.883 6.19086C214.015 6.19086 215.036 6.45308 215.946 6.97926C216.877 7.50543 217.615 8.23305 218.16 9.16211C218.706 10.0929 218.98 11.1539 218.98 12.347V22.9608H215.554V13.2864C215.554 12.4581 215.401 11.76 215.099 11.1939C214.816 10.6069 214.411 10.1624 213.885 9.86021C213.38 9.53721 212.782 9.37571 212.096 9.37571C211.41 9.37571 210.803 9.53721 210.276 9.86021C209.75 10.1641 209.337 10.6087 209.033 11.1939C208.729 11.7808 208.578 12.4772 208.578 13.2864V22.9608H205.181V13.2864C205.181 12.4581 205.028 11.76 204.726 11.1939C204.443 10.6069 204.039 10.1624 203.512 9.86021C203.007 9.53721 202.401 9.37571 201.693 9.37571C200.984 9.37571 200.399 9.53721 199.874 9.86021C199.348 10.1641 198.935 10.6087 198.631 11.1939C198.348 11.7808 198.207 12.4772 198.207 13.2864V22.9608H194.781L194.779 22.9643Z" fill="currentcolor"/>
<path d="M182.766 23.3272C181.654 23.3272 180.673 23.1345 179.824 22.7507C178.996 22.3461 178.348 21.8008 177.883 21.1131C177.417 20.4046 177.185 19.5762 177.185 18.6264C177.185 17.7372 177.377 16.9384 177.761 16.2299C178.166 15.5214 178.782 14.9257 179.61 14.4412C180.439 13.9567 181.481 13.6129 182.733 13.4097L188.436 12.4703V15.1689L183.401 16.0476C182.491 16.2091 181.825 16.5025 181.399 16.9263C180.974 17.3309 180.762 17.8571 180.762 18.5031C180.762 19.1491 180.995 19.6457 181.46 20.0503C181.944 20.4341 182.563 20.6269 183.309 20.6269C184.24 20.6269 185.048 20.4254 185.735 20.0208C186.442 19.6162 186.989 19.0813 187.373 18.4128C187.758 17.7251 187.949 16.9679 187.949 16.1379V11.9215C187.949 11.1123 187.646 10.4558 187.039 9.95051C186.454 9.42433 185.664 9.16211 184.674 9.16211C183.764 9.16211 182.966 9.40523 182.278 9.88973C181.611 10.3551 181.116 10.9612 180.791 11.7096L177.942 10.2839C178.244 9.47469 178.74 8.76791 179.428 8.16185C180.116 7.53495 180.915 7.05045 181.825 6.70661C182.755 6.36278 183.735 6.19086 184.766 6.19086C186.06 6.19086 187.203 6.43398 188.193 6.91848C189.203 7.40297 189.983 8.08023 190.528 8.95025C191.094 9.79942 191.377 10.7893 191.377 11.9215V22.9608H188.101V19.9878L188.799 20.0781C188.415 20.745 187.918 21.3215 187.312 21.806C186.725 22.2905 186.048 22.6656 185.28 22.9278C184.532 23.19 183.693 23.322 182.764 23.322L182.766 23.3272Z" fill="currentcolor"/>
<path d="M167.712 23.3272C166.074 23.3272 164.617 22.9539 163.344 22.2054C162.09 21.4378 161.111 20.4063 160.402 19.1126C159.694 17.798 159.34 16.3324 159.34 14.7156C159.34 13.0989 159.694 11.5916 160.402 10.3187C161.13 9.04576 162.101 8.04377 163.313 7.31615C164.527 6.5677 165.9 6.19434 167.437 6.19434C168.67 6.19434 169.773 6.4062 170.742 6.83165C171.713 7.25537 172.532 7.84233 173.199 8.59079C173.866 9.3184 174.371 10.1572 174.715 11.1088C175.08 12.0587 175.26 13.0694 175.26 14.1408C175.26 14.403 175.25 14.6774 175.231 14.9605C175.21 15.2435 175.17 15.5058 175.109 15.7489H162.038V13.019H173.17L171.532 14.2624C171.733 13.2708 171.662 12.3921 171.32 11.6246C170.995 10.8362 170.492 10.2197 169.802 9.77512C169.136 9.30972 168.347 9.07702 167.437 9.07702C166.527 9.07702 165.718 9.30972 165.01 9.77512C164.303 10.2197 163.756 10.8674 163.372 11.7166C162.988 12.5449 162.835 13.5556 162.917 14.7486C162.816 15.86 162.967 16.8308 163.372 17.6608C163.796 18.4892 164.383 19.1369 165.131 19.6023C165.899 20.0677 166.769 20.3004 167.739 20.3004C168.71 20.3004 169.57 20.0781 170.256 19.6336C170.964 19.189 171.52 18.6125 171.924 17.9057L174.715 19.2706C174.392 20.0382 173.887 20.7363 173.199 21.3632C172.532 21.9692 171.723 22.4555 170.773 22.8184C169.842 23.1622 168.821 23.3342 167.71 23.3342L167.712 23.3272Z" fill="currentcolor"/>
<path d="M149.625 22.9642V6.55723H152.902V9.86364L152.598 9.37914C152.963 8.30768 153.55 7.53839 154.357 7.07473C155.167 6.59023 156.137 6.34711 157.27 6.34711H158.27V9.47117H156.844C155.712 9.47117 154.792 9.82543 154.085 10.5322C153.397 11.2199 153.053 12.2097 153.053 13.5052V22.9677H149.627L149.625 22.9642Z" fill="currentcolor"/>
<path d="M145.039 23.1431C143.32 23.1431 141.986 22.6586 141.035 21.6879C140.085 20.7171 139.609 19.3522 139.609 17.5931V9.64659H136.728V6.55378H137.183C137.95 6.55378 138.548 6.3315 138.972 5.88694C139.397 5.44238 139.609 4.83632 139.609 4.06703V2.79413H143.035V6.55551H146.765V9.64832H143.035V17.442C143.035 18.0081 143.125 18.4926 143.308 18.8972C143.49 19.281 143.784 19.5849 144.186 19.8072C144.591 20.0086 145.117 20.1111 145.763 20.1111C145.925 20.1111 146.107 20.1007 146.309 20.0816C146.512 20.0607 146.703 20.0416 146.885 20.0208V22.9625C146.602 23.0025 146.288 23.0441 145.944 23.0841C145.6 23.124 145.296 23.1449 145.036 23.1449L145.039 23.1431Z" fill="currentcolor"/>
<path d="M127.161 23.3272C125.746 23.3272 124.431 23.065 123.217 22.5388C122.004 21.9935 120.974 21.2555 120.125 20.3247C119.276 19.3939 118.649 18.3224 118.244 17.1103L121.278 15.8357C121.823 17.2301 122.624 18.3016 123.674 19.05C124.725 19.7985 125.939 20.1719 127.314 20.1719C128.123 20.1719 128.832 20.0503 129.438 19.8072C130.046 19.545 130.509 19.1803 130.832 18.7149C131.176 18.2495 131.348 17.7146 131.348 17.1068C131.348 16.2785 131.115 15.6203 130.65 15.1358C130.185 14.6513 129.499 14.2658 128.589 13.9828L124.343 12.6491C122.644 12.1229 121.351 11.3241 120.462 10.2526C119.572 9.16034 119.128 7.88745 119.128 6.43047C119.128 5.15758 119.44 4.04444 120.067 3.09455C120.694 2.12381 121.554 1.36667 122.646 0.819656C123.758 0.274376 125.022 0 126.437 0C127.852 0 129.025 0.243119 130.138 0.727618C131.249 1.19302 132.199 1.83902 132.989 2.66909C133.797 3.49743 134.384 4.45775 134.748 5.55004L131.777 6.8542C131.332 5.66118 130.634 4.7408 129.684 4.0948C128.754 3.44707 127.672 3.12407 126.439 3.12407C125.69 3.12407 125.034 3.25605 124.468 3.51827C123.902 3.76138 123.457 4.12433 123.132 4.61056C122.83 5.07596 122.677 5.62124 122.677 6.24814C122.677 6.97575 122.91 7.62349 123.376 8.18961C123.841 8.75573 124.548 9.18118 125.499 9.46424L129.441 10.7076C131.242 11.2529 132.595 12.0413 133.505 13.0728C134.415 14.0835 134.87 15.3477 134.87 16.8637C134.87 18.1175 134.536 19.2289 133.87 20.1996C133.222 21.1704 132.322 21.9379 131.171 22.5041C130.02 23.0493 128.684 23.3237 127.168 23.3237L127.161 23.3272Z" fill="currentcolor"/>
<path d="M99.2026 29.0283V6.55551H102.478V9.95221L102.084 9.16382C102.69 8.23302 103.499 7.5054 104.51 6.98096C105.52 6.45479 106.673 6.19257 107.967 6.19257C109.525 6.19257 110.919 6.56592 112.152 7.31438C113.406 8.06284 114.385 9.08393 115.094 10.3777C115.822 11.6714 116.186 13.1266 116.186 14.7451C116.186 16.3636 115.822 17.8188 115.094 19.1126C114.385 20.4063 113.416 21.4378 112.183 22.2054C110.949 22.9538 109.544 23.3272 107.967 23.3272C106.692 23.3272 105.531 23.065 104.48 22.5388C103.449 22.0126 102.65 21.2555 102.084 20.2639L102.629 19.6266V29.0283H99.2026ZM107.634 20.1423C108.604 20.1423 109.462 19.9096 110.211 19.4442C110.959 18.9788 111.546 18.3415 111.97 17.534C112.414 16.7057 112.638 15.7749 112.638 14.7434C112.638 13.7119 112.416 12.7932 111.97 11.984C111.546 11.1748 110.959 10.5392 110.211 10.0738C109.462 9.60837 108.604 9.37568 107.634 9.37568C106.663 9.37568 105.824 9.60837 105.055 10.0738C104.306 10.5392 103.709 11.1765 103.264 11.984C102.841 12.7932 102.629 13.7119 102.629 14.7434C102.629 15.7749 102.841 16.704 103.264 17.534C103.709 18.3433 104.306 18.9806 105.055 19.4442C105.822 19.9096 106.682 20.1423 107.634 20.1423Z" fill="currentcolor"/>
<path d="M88.8197 22.9642V6.55723H92.0949V9.86364L91.791 9.37914C92.1557 8.30768 92.7409 7.53839 93.5501 7.07473C94.3594 6.59023 95.3301 6.34711 96.4623 6.34711H97.4643V9.47117H96.0386C94.9064 9.47117 93.986 9.82543 93.2792 10.5322C92.5915 11.2199 92.2477 12.2097 92.2477 13.5052V22.9677H88.8215L88.8197 22.9642Z" fill="currentcolor"/>
<path d="M76.8062 23.3272C75.6948 23.3272 74.7137 23.1345 73.8645 22.7507C73.0362 22.3461 72.3884 21.8008 71.923 21.1131C71.4576 20.4046 71.2249 19.5762 71.2249 18.6264C71.2249 17.7372 71.4177 16.9384 71.8015 16.2299C72.2061 15.5214 72.8226 14.9257 73.6509 14.4412C74.4793 13.9567 75.5212 13.6129 76.775 13.4097L82.4761 12.4703V15.1689L77.4418 16.0476C76.5319 16.2091 75.865 16.5025 75.4396 16.9263C75.0158 17.3309 74.8023 17.8571 74.8023 18.5031C74.8023 19.1491 75.035 19.6457 75.5004 20.0503C75.9849 20.4341 76.6031 20.6269 77.3498 20.6269C78.2806 20.6269 79.0881 20.4254 79.7758 20.0208C80.4825 19.6162 81.0295 19.0813 81.4133 18.4128C81.7971 17.7251 81.9899 16.9679 81.9899 16.1379V11.9215C81.9899 11.1123 81.686 10.4558 81.0799 9.95051C80.493 9.42433 79.7046 9.16211 78.7147 9.16211C77.8048 9.16211 77.0059 9.40523 76.3183 9.88973C75.6514 10.3551 75.1565 10.9612 74.8318 11.7096L71.9803 10.2839C72.2842 9.47469 72.7792 8.76791 73.4668 8.16185C74.1545 7.53495 74.9533 7.05045 75.8633 6.70661C76.7941 6.36278 77.7735 6.19086 78.805 6.19086C80.0988 6.19086 81.2414 6.43398 82.2313 6.91848C83.2419 7.40297 84.0199 8.08023 84.5669 8.95025C85.133 9.79942 85.4161 10.7893 85.4161 11.9215V22.9608H82.1409V19.9878L82.839 20.0781C82.4553 20.745 81.9603 21.3215 81.3525 21.806C80.7656 22.2905 80.0883 22.6656 79.3208 22.9278C78.5723 23.19 77.7336 23.322 76.8028 23.322L76.8062 23.3272Z" fill="currentcolor"/>
<path d="M47.6998 22.9625L41.4829 0.368164H45.2738L50.3081 19.9288H49.3686L54.5852 0.368164H58.3154L63.532 19.9288H62.5613L67.6268 0.368164H71.3882L65.2008 22.9625H61.1668L55.9207 3.70409H56.9817L51.7043 22.9625H47.7015H47.6998Z" fill="currentcolor"/>
</svg></div></a><nav role="navigation" class="navbar5_menu w-nav-menu"><div class="navbar5_menu-left"><div data-delay="300" data-hover="true" data-w-id="e11dc28f-a971-eb88-d46e-f2fcc7e60ee0" class="navbar-dropdown2_component w-dropdown"><div class="navbar-dropdown2_dropdown-toggle w-dropdown-toggle"><div>Product</div><div class="dropdown-chevron-2 w-embed"><svg width=" 100%" height=" 100%" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M2.55806 6.29544C2.46043 6.19781 2.46043 6.03952 2.55806 5.94189L3.44195 5.058C3.53958 4.96037 3.69787 4.96037 3.7955 5.058L8.00001 9.26251L12.2045 5.058C12.3021 4.96037 12.4604 4.96037 12.5581 5.058L13.4419 5.94189C13.5396 6.03952 13.5396 6.19781 13.4419 6.29544L8.17678 11.5606C8.07915 11.6582 7.92086 11.6582 7.82323 11.5606L2.55806 6.29544Z" fill="currentColor"/>
</svg></div></div><nav class="navbar-dropdown2_dropdown-list w-dropdown-list"><div class="navbar-dropdown2_container"><div class="div-block-626 shadow-xxlarge"><div class="navbar-dropdown2_dropdown-content"><div class="navbar-dropdown2_content-left"><div class="navbar-dropdown2_dropdown-link-list"><a href="/bring-your-own-cloud-kafka-data-streaming" class="navbar-dropdown2_dropdown-link w-inline-block"><div class="navbar5_icon-wrapper"><div class="icon-embed-xxsmall-133 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M80 128a80 80 0 1 1 80 80H72a56 56 0 0 1 0-112a57.5 57.5 0 0 1 13.9 1.7" opacity=".2"></path><path fill="currentColor" d="M160 40a88 88 0 0 0-78.7 48.7A58.2 58.2 0 0 0 72 88a64 64 0 0 0 0 128h88a88 88 0 0 0 0-176Zm0 160H72a48 48 0 0 1 0-96h3.3a85.7 85.7 0 0 0-3.3 24a8 8 0 0 0 16 0a72 72 0 1 1 72 72Z"></path><path fill="currentColor" d="M186.3 110.3L144 152.7l-18.3-18.4a8.1 8.1 0 0 0-11.4 11.4l24 24a8.2 8.2 0 0 0 11.4 0l48-48a8.1 8.1 0 0 0-11.4-11.4Z"></path></svg></div></div><div class="navbar5_item-right"><div>Bring Your Own Cloud</div><p class="text-size-smal">Deploy in any cloud or self-host, using your own compute and object storage.</p></div></a><a href="/data-governance-schema-registry-and-validation" class="navbar-dropdown2_dropdown-link w-inline-block"><div class="navbar5_icon-wrapper"><div class="icon-embed-xxsmall-136 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><ellipse cx="128" cy="80" fill="currentColor" opacity=".2" rx="88" ry="48"></ellipse><path fill="currentColor" d="M128 24c-53.8 0-96 24.6-96 56v96c0 31.4 42.2 56 96 56s96-24.6 96-56V80c0-31.4-42.2-56-96-56Zm80 104c0 9.6-7.9 19.4-21.6 26.9c-15.5 8.5-36.2 13.1-58.4 13.1s-42.9-4.6-58.4-13.1C55.9 147.4 48 137.6 48 128v-16.6c17.1 14.9 46.2 24.6 80 24.6s62.9-9.7 80-24.6ZM69.6 53.1C85.1 44.6 105.8 40 128 40s42.9 4.6 58.4 13.1C200.1 60.6 208 70.4 208 80s-7.9 19.4-21.6 26.9c-15.5 8.5-36.2 13.1-58.4 13.1s-42.9-4.6-58.4-13.1C55.9 99.4 48 89.6 48 80s7.9-19.4 21.6-26.9Zm116.8 149.8c-15.5 8.5-36.2 13.1-58.4 13.1s-42.9-4.6-58.4-13.1C55.9 195.4 48 185.6 48 176v-16.6c17.1 14.9 46.2 24.6 80 24.6s62.9-9.7 80-24.6V176c0 9.6-7.9 19.4-21.6 26.9Z"></path></svg></div></div><div class="navbar5_item-right"><div>Data Governance</div><p class="text-size-smal">Schema registry, linking, and validation in your own cloud account.</p></div></a></div><div class="navbar-dropdown2_dropdown-link-list"><a href="/tableflow" class="navbar-dropdown2_dropdown-link w-inline-block"><div class="navbar5_icon-wrapper"><div class="icon-embed-xxsmall-286 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M33.7 77A8 8 0 0 1 35 65.8a81.8 81.8 0 0 1 29.1-13.6c16.1-4 41.1-5 68.3 13.1c42.4 28.3 77.2 1.6 78.6.4a8.2 8.2 0 0 1 11.3 1.3a8 8 0 0 1-1.3 11.2a81.8 81.8 0 0 1-29.1 13.6a81 81 0 0 1-19.7 2.4c-14 0-30.8-3.7-48.6-15.5c-42.4-28.3-77.2-1.6-78.6-.4A8.2 8.2 0 0 1 33.7 77ZM211 121.7c-1.4 1.2-36.2 27.9-78.6-.4c-27.2-18.1-52.2-17.1-68.3-13.1A81.8 81.8 0 0 0 35 121.8a8 8 0 0 0-1.3 11.2a8.2 8.2 0 0 0 11.3 1.3c1.4-1.2 36.2-27.9 78.6.4c17.8 11.8 34.6 15.5 48.6 15.5a81 81 0 0 0 19.7-2.4a81.8 81.8 0 0 0 29.1-13.6a8 8 0 0 0 1.3-11.2a8.2 8.2 0 0 0-11.3-1.3Zm0 56c-1.4 1.2-36.2 27.9-78.6-.4c-27.2-18.1-52.2-17.1-68.3-13.1A81.8 81.8 0 0 0 35 177.8a8 8 0 0 0-1.3 11.2a8.2 8.2 0 0 0 11.3 1.3c1.4-1.2 36.2-27.9 78.6.4c17.8 11.8 34.6 15.5 48.6 15.5a82.6 82.6 0 0 0 48.8-16a8 8 0 0 0 1.3-11.2a8.2 8.2 0 0 0-11.3-1.3Z"></path></svg></div></div><div class="navbar5_item-right"><div class="div-block-492"><div class="text-block-249">New!</div></div><div>WarpStream Tableflow</div><p class="text-size-smal">Fully-managed iceberg tables, materialized from any Kafka topic.</p></div></a><a href="/managed-data-pipelines-kafka-compatible-stream-processing" class="navbar-dropdown2_dropdown-link w-inline-block"><div class="navbar5_icon-wrapper"><div class="icon-embed-xxsmall-134 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M72 176a28 28 0 1 1-28-28a28 28 0 0 1 28 28Z" opacity=".2"></path><path fill="currentColor" d="m245.7 74.3l-40-40a8.1 8.1 0 0 0-11.4 11.4L220.7 72H176a56 56 0 0 0-56 56a40 40 0 0 1-40 40h-.9a36 36 0 1 0 0 16h.9a56 56 0 0 0 56-56a40 40 0 0 1 40-40h44.7l-26.4 26.3a8.1 8.1 0 0 0 0 11.4a8.2 8.2 0 0 0 11.4 0l40-40a8.1 8.1 0 0 0 0-11.4ZM44 196a20 20 0 1 1 20-20a20.1 20.1 0 0 1-20 20Z"></path></svg></div></div><div class="navbar5_item-right"><div>Managed Data Pipelines</div><p class="text-size-smal">Managed integrations and connectors. Powerful, scalable stream processing.</p></div></a></div><div class="navbar-dropdown2_dropdown-link-list"><a href="/orbit-apache-kafka-migration-and-replication" class="navbar-dropdown2_dropdown-link w-inline-block"><div class="navbar5_icon-wrapper"><div class="icon-embed-xxsmall-135 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M216 128a88 88 0 1 1-88-88a88 88 0 0 1 88 88Z" opacity=".2"></path><path fill="currentColor" d="M245.8 60c-5.5-9.5-20.3-18.4-59.8-8.5A96 96 0 0 0 32 128a117.3 117.3 0 0 0 .7 12c-28.3 29.2-27.9 46.5-22.5 56c3.7 6.4 11.9 12.8 29.8 12.8a121.7 121.7 0 0 0 25.5-3.2l4.5-1.1A96 96 0 0 0 224 128a117.3 117.3 0 0 0-.7-12l3.1-3.3c25.3-27.5 24.5-43.8 19.4-52.7ZM128 48a80.2 80.2 0 0 1 78.1 62.5c-16.2 15.4-37.8 31.2-62.1 45.2s-48.7 24.9-70.1 31.1A79.9 79.9 0 0 1 128 48ZM24.1 188c-1.5-2.6-.7-7.5 2.3-13.4A85.7 85.7 0 0 1 37.1 159a95.2 95.2 0 0 0 18.7 32.2c-18.7 3.3-29.3 1-31.7-3.2ZM128 208a79.6 79.6 0 0 1-37.9-9.6c19.6-6.8 40.8-16.7 61.9-28.8a373.3 373.3 0 0 0 55.9-39.2A80 80 0 0 1 128 208Zm72.2-143.2a83.9 83.9 0 0 1 19-1.5c6.6.4 11.2 2.1 12.7 4.7c2.4 4.2-.9 14.5-13 29a95.2 95.2 0 0 0-18.7-32.2Z"></path></svg></div></div><div class="navbar5_item-right"><div>Orbit</div><p class="text-size-smal">Offset-preserving replication from any source Apache Kafka cluster.</p></div></a><a href="#" class="navbar-dropdown2_dropdown-link shadbut hidefornow w-inline-block"><div class="navbar5_icon-wrapper"><div class="icon-embed-xxsmall-137 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M32 96h192V56a8 8 0 0 0-8-8H40a8 8 0 0 0-8 8Z" opacity=".2"></path><path fill="currentColor" d="M216 40H40a16 16 0 0 0-16 16v144a16 16 0 0 0 16 16h176a16 16 0 0 0 16-16V56a16 16 0 0 0-16-16Zm0 16v32H40V56Zm0 144H40v-96h176v96Z"></path></svg></div></div><div class="navbar5_item-right"><div class="text-weight-semibold">Console UI</div><p class="text-size-smal">Schema registry, linking, and validation in your own cloud account.</p></div></a><a href="/multi-region-clusters" class="navbar-dropdown2_dropdown-link w-inline-block"><div class="navbar5_icon-wrapper"><div class="icon-embed-xxsmall-138 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M80 108v40a8 8 0 0 1-8 8H32a8 8 0 0 1-8-8v-40a8 8 0 0 1 8-8h40a8 8 0 0 1 8 8Zm136-68h-48a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8V48a8 8 0 0 0-8-8Zm0 112h-48a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8Z" opacity=".2"></path><path fill="currentColor" d="M168 112h48a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-48a16 16 0 0 0-16 16v16h-8a32.1 32.1 0 0 0-32 32v24H88v-12a16 16 0 0 0-16-16H32a16 16 0 0 0-16 16v40a16 16 0 0 0 16 16h40a16 16 0 0 0 16-16v-12h24v24a32.1 32.1 0 0 0 32 32h8v16a16 16 0 0 0 16 16h48a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16h-48a16 16 0 0 0-16 16v16h-8a16 16 0 0 1-16-16V96a16 16 0 0 1 16-16h8v16a16 16 0 0 0 16 16Zm-96 36H32v-40h40v40Zm96 12h48v48h-48Zm0-112h48v48h-48Z"></path></svg></div></div><div class="navbar5_item-right"><div>Multi-Region Clusters</div><p class="text-size-smal">RPO=0: Zero point of failure by default with no ops, tuning, or trade-offs.</p></div></a></div></div></div><div class="div-block-627"><a href="/integrations" class="link-block-74 w-inline-block"><div>Integrations</div><div class="icon-embed-xxsmall-345 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M248 152a8 8 0 0 1-8 8h-16v16a8 8 0 0 1-16 0v-16h-16a8 8 0 0 1 0-16h16v-16a8 8 0 0 1 16 0v16h16a8 8 0 0 1 8 8ZM64 68h12v12a8 8 0 0 0 16 0V68h12a8 8 0 0 0 0-16H92V40a8 8 0 0 0-16 0v12H64a8 8 0 0 0 0 16Zm120 124h-8v-8a8 8 0 0 0-16 0v8h-8a8 8 0 0 0 0 16h8v8a8 8 0 0 0 16 0v-8h8a8 8 0 0 0 0-16Zm-2.3-74.3L75.3 224a15.9 15.9 0 0 1-22.6 0L32 203.3a15.9 15.9 0 0 1 0-22.6L180.7 32a16.1 16.1 0 0 1 22.6 0L224 52.7a15.9 15.9 0 0 1 0 22.6l-42.3 42.4ZM155.3 80l20.7 20.7L212.7 64L192 43.3Zm9.4 32L144 91.3L43.3 192L64 212.7Z"></path></svg></div></a><a href="/migration" class="link-block-74 w-inline-block"><div>Why Switch?</div><div class="icon-embed-xxsmall-346 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M225.9 102.8c-3.8-3.9-7.7-8-9.2-11.5s-1.4-8.7-1.5-14c-.1-9.7-.3-20.8-8-28.5s-18.8-7.9-28.5-8c-5.3-.1-10.7-.2-14-1.5s-7.6-5.4-11.5-9.2C146.3 23.5 138.4 16 128 16s-18.3 7.5-25.2 14.1c-3.9 3.8-8 7.7-11.5 9.2s-8.7 1.4-14 1.5c-9.7.1-20.8.3-28.5 8s-7.9 18.8-8 28.5c-.1 5.3-.2 10.7-1.5 14s-5.4 7.6-9.2 11.5C23.5 109.7 16 117.6 16 128s7.5 18.3 14.1 25.2c3.8 3.9 7.7 8 9.2 11.5s1.4 8.7 1.5 14c.1 9.7.3 20.8 8 28.5s18.8 7.9 28.5 8c5.3.1 10.7.2 14 1.5s7.6 5.4 11.5 9.2c6.9 6.6 14.8 14.1 25.2 14.1s18.3-7.5 25.2-14.1c3.9-3.8 8-7.7 11.5-9.2s8.7-1.4 14-1.5c9.7-.1 20.8-.3 28.5-8s7.9-18.8 8-28.5c.1-5.3.2-10.7 1.5-14s5.4-7.6 9.2-11.5c6.6-6.9 14.1-14.8 14.1-25.2s-7.5-18.3-14.1-25.2Zm-11.6 39.3c-4.8 5-9.7 10.2-12.4 16.5s-2.6 13.1-2.7 19.8s-.2 14.4-3.3 17.5s-10.4 3.2-17.5 3.3s-13.7.2-19.8 2.7s-11.5 7.6-16.5 12.4S132 224 128 224s-9.1-4.9-14.1-9.7s-10.2-9.7-16.5-12.4s-13.1-2.6-19.8-2.7s-14.4-.2-17.5-3.3s-3.2-10.4-3.3-17.5s-.2-13.7-2.7-19.8s-7.6-11.5-12.4-16.5S32 132 32 128s4.9-9.1 9.7-14.1s9.7-10.2 12.4-16.5s2.6-13.1 2.7-19.8s.2-14.4 3.3-17.5s10.4-3.2 17.5-3.3s13.7-.2 19.8-2.7s11.5-7.6 16.5-12.4S124 32 128 32s9.1 4.9 14.1 9.7s10.2 9.7 16.5 12.4s13.1 2.6 19.8 2.7s14.4.2 17.5 3.3s3.2 10.4 3.3 17.5s.2 13.7 2.7 19.8s7.6 11.5 12.4 16.5S224 124 224 128s-4.9 9.1-9.7 14.1ZM140 180a12 12 0 1 1-12-12a12 12 0 0 1 12 12Zm24-72a36 36 0 0 1-28 35.1v.9a8 8 0 0 1-16 0v-8a8 8 0 0 1 8-8a20 20 0 1 0-20-20a8 8 0 0 1-16 0a36 36 0 0 1 72 0Z"></path></svg></div></a><a href="/changelog" class="link-block-74 w-inline-block"><div>Changelog</div><div class="icon-embed-xxsmall-354 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M104 68a36 36 0 1 0-44 35.1v49.8a36 36 0 1 0 16 0v-49.8A36.1 36.1 0 0 0 104 68Zm-56 0a20 20 0 1 1 20 20a20.1 20.1 0 0 1-20-20Zm40 120a20 20 0 1 1-20-20a20.1 20.1 0 0 1 20 20Zm108-35.1v-33a55.5 55.5 0 0 0-16.4-39.6L155.3 56H176a8 8 0 0 0 0-16h-40a8 8 0 0 0-8 8v40a8 8 0 0 0 16 0V67.3l24.3 24.3a40 40 0 0 1 11.7 28.3v33a36 36 0 1 0 16 0Zm-8 55.1a20 20 0 1 1 20-20a20.1 20.1 0 0 1-20 20Z"></path></svg></div></a><a href="/executive-summary" class="link-block-74 goldy w-inline-block"><div class="text-block-313">Exec Summary</div><div class="icon-embed-xxsmall-349 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M48 136a8 8 0 0 0 8-8V40h88v48a8 8 0 0 0 8 8h48v32a8 8 0 0 0 16 0V88a7.7 7.7 0 0 0-2.4-5.7l-55.9-56A8.1 8.1 0 0 0 152 24H56a16 16 0 0 0-16 16v88a8 8 0 0 0 8 8Zm112-84.7L188.7 80H160ZM64 160H48a8 8 0 0 0-8 8v48a8 8 0 0 0 16 0v-8h8a24 24 0 0 0 0-48Zm0 32h-8v-16h8a8 8 0 0 1 0 16Zm132-16v12h16a8 8 0 0 1 0 16h-16v12a8 8 0 0 1-16 0v-48a8 8 0 0 1 8-8h28a8 8 0 0 1 0 16Zm-68-16h-14a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h14a32 32 0 0 0 0-64Zm0 48h-6v-32h6a16 16 0 0 1 0 32Z"></path></svg></div></a><a href="https://cal.com/forms/9c5f3fcf-55ee-452b-8df3-0a1098010774" target="_blank" class="link-block-74 blue w-inline-block"><div>Book A Demo</div><div class="icon-embed-xxsmall-352 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M208 32h-24v-8a8 8 0 0 0-16 0v8H88v-8a8 8 0 0 0-16 0v8H48a16 16 0 0 0-16 16v160a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16ZM72 48v8a8 8 0 0 0 16 0v-8h80v8a8 8 0 0 0 16 0v-8h24v32H48V48Zm136 160H48V96h160v112Zm-38.2-85.5a8 8 0 0 1-.3 11.3l-46.7 44a7.7 7.7 0 0 1-5.5 2.2a7.9 7.9 0 0 1-5.5-2.2l-25.3-24a8 8 0 1 1 11-11.6l19.8 18.8l41.2-38.8a7.9 7.9 0 0 1 11.3.3Z"></path></svg></div></a></div></div></div></nav></div><a href="/pricing" data-wf-event-ids="157064125" class="navbar5_link w-nav-link">Pricing</a><a href="/customers" class="navbar5_link w-nav-link"><span class="text-span-50">Customers</span></a><a href="/blog" class="navbar5_link w-nav-link">Blog</a><a href="/about" class="navbar5_link w-nav-link">Company</a><a href="/contact-us" class="navbar5_link w-nav-link">Contact</a><a href="https://docs.warpstream.com/warpstream" target="_blank" class="navbar5_link lasto w-nav-link">Docs</a></div><div class="navbar5_menu-right"><a href="/migration" aria-label="Learn about migrating to WarpStream" class="link-block-44 w-inline-block"><div class="tooltip1_component"><div class="tooltip1_tooltip-wrapper-3 is-bottom-wrapper"><div class="tooltip1_card-wrapper"><div class="text-size-small-3">Switch to WarpStream<br/></div></div><div class="tooltip1_pointer is-bottom-pointer"></div></div><div class="tooltip1_element-wrapper-6"><div class="icon-embed-xxsmall-332 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--carbon" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path fill="currentColor" d="M28 4H4a2 2 0 0 0-2 2v20a2 2 0 0 0 2 2h24a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2m0 22H12v-6h-2v6H4v-9h16.172l-3.586 3.586L18 22l6-6l-6-6l-1.414 1.414L20.172 15H4V6h6v6h2V6h16Z"></path></svg></div></div><div class="tooltip1_responsive w-embed w-script"><!-- Responsive Tooltip Custom Code -->
<script>
(()=>{
//Update these class names here if you rename classes
iconWrapperClass="tooltip1_element-wrapper"
tooltipWrapperClass="tooltip1_tooltip-wrapper"
pointerClass="tooltip1_pointer"
//Code to reposition the tooltip if it is going to go outside the viewport. See https://github.com/relumetech/powerups/tree/main/tooltips for more info
function f(t){return t[0].toUpperCase()+t.slice(1)}function w(t){return"padding"+f(t)}const y={bottom:"top",left:"right",right:"left",top:"bottom"},C={bottom:{margin:[1,"auto",0,"auto"],inset:[0,0,"auto",0]},left:{margin:[0,1,0,0],inset:["auto",0,"auto","auto"]},right:{margin:[0,0,0,1],inset:["auto","auto","auto",0]},top:{margin:[0,"auto",1,"auto"],inset:["auto",0,0,0]}};var t={start:"left",end:"right",len:"width",translate:"translateX"},e={start:"top",end:"bottom",len:"height",translate:"translateY"};const b={top:t,bottom:t,left:e,right:e};function n(s){var e,n="relumeTooltipSetup";if(!s.dataset[n]){s.dataset[n]=1;const d=s.parentElement.querySelector("."+tooltipWrapperClass),m=s.parentElement.querySelector("."+pointerClass),g=m.className.includes("is-left")?"left":m.className.includes("is-right")?"right":m.className.includes("is-bottom")?"bottom":"top",u=y[g],c=(n=d,n=window.getComputedStyle(n),parseInt(n.paddingTop,10)||parseInt(n.paddingBottom,10)||parseInt(n.paddingLeft,10)||parseInt(n.paddingRight,10)||0);n=m,e=g,n=window.getComputedStyle(n),e=C[e].margin.indexOf(1);const h=[n.marginTop,n.marginRight,n.marginBottom,n.marginLeft][e];let t=!1;function p(){if(t){window.requestAnimationFrame(p);var e=s.getBoundingClientRect(),n=d.getBoundingClientRect(),o=document.documentElement,a=b[g],i=(e[a.start]+e[a.end]-n[a.len])/2,r=(e[a.start]+e[a.end]+n[a.len])/2;let t=0;var l=o["client"+f(a.len)],i=(i<0?t=-i:l<r&&(t=l-r),{bottom:e.bottom+n.height<o.clientHeight,left:0<e.left-n.width,right:e.right+n.width<o.clientWidth,top:0<e.top-n.height}),l=i[g]||!i[u]?g:u;r=l,o=a,e=t,n=y[r],d.style[n]="100%",d.style[r]="auto",d.style[w(n)]=c+"px",d.style[w(r)]="0",d.style.transform=o.translate+"("+e+"px)",m.style.transform=o.translate+"("+-e+"px) rotate(45deg)",m.style.margin=C[r].margin.map(t=>1===t?h:t).join(" "),m.style.inset=C[r].inset.join(" ")}}s.parentElement.addEventListener("mouseenter",()=>{t=!0,p()}),s.parentElement.addEventListener("mouseleave",()=>{t=!1})}}function o(){document.querySelectorAll("."+iconWrapperClass).forEach(n)}window.addEventListener("DOMContentLoaded",o),o()})();
</script></div></div></a><a aria-label="Join WarpStream on Slack" href="https://console.warpstream.com/socials/slack" target="_blank" class="link-block-44 w-inline-block"><div class="icon-embed-xxsmall-6 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--carbon" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path fill="currentColor" d="M9.042 19.166a2.521 2.521 0 1 1-2.52-2.521h2.52zm1.27 0a2.521 2.521 0 0 1 5.043 0v6.313a2.521 2.521 0 1 1-5.042 0zm2.522-10.124a2.521 2.521 0 1 1 2.521-2.52v2.52zm0 1.27a2.521 2.521 0 0 1 0 5.043H6.52a2.521 2.521 0 1 1 0-5.042zm10.124 2.522a2.521 2.521 0 1 1 2.52 2.521h-2.52zm-1.27 0a2.521 2.521 0 0 1-5.043 0V6.52a2.521 2.521 0 1 1 5.042 0zm-2.522 10.124a2.521 2.521 0 1 1-2.521 2.52v-2.52zm0-1.27a2.521 2.521 0 0 1 0-5.043h6.313a2.521 2.521 0 1 1 0 5.042z"></path></svg></div></a><a aria-label="Join WarpStream on Discord" href="https://console.warpstream.com/socials/discord" target="_blank" class="link-block-44 w-inline-block"><div class="icon-embed-small-2 w-embed"><svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 32 32" fill="none" preserveAspectRatio="xMidYMid meet" aria-hidden="true" role="img">
<path d="M19.7599 5.67999C19.4951 6.15424 19.2591 6.64402 19.0532 7.14666C17.0302 6.82673 14.9695 6.82673 12.9466 7.14666C12.7407 6.64402 12.5047 6.15424 12.2399 5.67999C10.3343 6.00559 8.48176 6.58871 6.73322 7.41333C3.60648 11.9257 2.18847 17.4039 2.73322 22.8667C4.77087 24.3985 7.05783 25.5668 9.49322 26.32C10.0478 25.5875 10.5427 24.8116 10.9732 24C10.1787 23.707 9.41495 23.3363 8.69322 22.8933C8.89117 22.7616 9.07842 22.6145 9.25322 22.4533C11.3578 23.4671 13.6638 23.9935 15.9999 23.9935C18.3359 23.9935 20.6419 23.4671 22.7466 22.4533C22.9332 22.6133 23.1199 22.76 23.3066 22.8933C22.5809 23.3329 21.818 23.7076 21.0266 24.0133C21.4392 24.8434 21.9209 25.6373 22.4666 26.3867C24.8989 25.636 27.1819 24.4674 29.2132 22.9333C29.7711 17.4696 28.3519 11.9869 25.2132 7.47999C23.4843 6.63831 21.6501 6.03289 19.7599 5.67999ZM11.5732 19.7467C10.906 19.6988 10.2833 19.3942 9.83578 18.897C9.38829 18.3998 9.15082 17.7486 9.17322 17.08C9.14744 16.4105 9.38374 15.7574 9.83191 15.2595C10.2801 14.7615 10.9048 14.458 11.5732 14.4133C12.2417 14.458 12.8664 14.7615 13.3145 15.2595C13.7627 15.7574 13.999 16.4105 13.9732 17.08C13.999 17.7494 13.7627 18.4025 13.3145 18.9005C12.8664 19.3985 12.2417 19.702 11.5732 19.7467ZM20.4266 19.7467C19.7593 19.6988 19.1366 19.3942 18.6891 18.897C18.2416 18.3998 18.0042 17.7486 18.0266 17.08C18.0008 16.4105 18.2371 15.7574 18.6852 15.2595C19.1334 14.7615 19.7581 14.458 20.4266 14.4133C21.0963 14.4546 21.723 14.7572 22.1718 15.2559C22.6207 15.7546 22.8558 16.4097 22.8266 17.08C22.8558 17.7503 22.6207 18.4053 22.1718 18.9041C21.723 19.4028 21.0963 19.7054 20.4266 19.7467Z" fill="currentColor"/>
</svg></div></a><a href="https://console.warpstream.com/login" target="_blank" class="button-4 is-secondary is-small w-button">Sign In</a><a href="#" class="button is-small is-icon prettyboxshadow smol hude w-button">Start Free</a><div data-delay="200" data-hover="false" data-w-id="75c45d33-03a8-3af8-4473-7cd23ec50886" class="dropdown2_component w-dropdown"><div class="button is-small is-icon prettyboxshadow smol w-dropdown-toggle"><div>Start Free</div></div><nav class="dropdown2_dropdown-list-2 shadbut navbar w-dropdown-list"><a href="https://console.warpstream.com/signup" class="link-block-89 firsto w-inline-block"><div class="div-block-731"><img src="https://cdn.prod.website-files.com/683882630fceea3de6f5776a/683882630fceea3de6f57800_Group%20(20).svg" loading="lazy" alt="WarpStream Logo" class="image-175"/><div class="text-block-356">Console Sign Up</div></div></a><a href="https://aws.amazon.com/marketplace/pp/prodview-aciq4fyplkpgy" target="_blank" class="link-block-89 w-inline-block"><div class="div-block-731"><img src="https://cdn.prod.website-files.com/683882630fceea3de6f5776a/6854a43277293dc830587c6d_aws_marketplace%20(1).svg" loading="lazy" alt="AWS Marketplace logo" class="image-175"/><div class="text-block-356">AWS Marketplace</div></div></a><a href="https://console.cloud.google.com/marketplace/product/warpstream-public/warpstream?project=warpstream-cp-stag" target="_blank" class="link-block-89 lastye w-inline-block"><div class="div-block-731 lasty"><img src="https://cdn.prod.website-files.com/683882630fceea3de6f5776a/6854a128ac3a3262e7a3509e_gcp%20(1).svg" loading="lazy" alt="Google Cloud Platform Marketplace logo" class="image-175"/><div class="text-block-356">Google Cloud Marketplace</div></div></a></nav></div></div></nav><div class="div-block-676"><a aria-label="Sign in to WarpStream" href="https://console.warpstream.com/login" class="link-block-81 w-inline-block"><div class="icon-embed-xxsmall-384 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><g fill="currentColor"><path d="M200 40v176H40a16 16 0 0 1-16-16V56a16 16 0 0 1 16-16Z" opacity=".2"></path><path d="m141.66 133.66l-40 40a8 8 0 0 1-11.32-11.32L116.69 136H24a8 8 0 0 1 0-16h92.69L90.34 93.66a8 8 0 0 1 11.32-11.32l40 40a8 8 0 0 1 0 11.32M200 32h-64a8 8 0 0 0 0 16h56v160h-56a8 8 0 0 0 0 16h64a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8"></path></g></svg></div></a><div class="navbar5_menu-button w-nav-button"><div class="menu-icon1"><div class="menu-icon1_line-top"></div><div class="menu-icon1_line-middle"><div class="menu-icon1_line-middle-inner"></div></div><div class="menu-icon1_line-bottom"></div></div></div></div></div></div></div></div></div></div><header class="section_blog-post-header2"><div class="padding-global"><div class="container-large"><div class="padding-section-large blogposts"><div class="blog-post-header2_component"><div class="max-width-large"><div class="blog-post-header2_title-wrapper"><div class="margin-bottom margin-xsmall"><div class="blog-post-header2_meta-wrapper"><div><div class="w-dyn-list"><div role="list" class="collection-list-14 w-dyn-items"><div role="listitem" class="collection-item-6 w-dyn-item"><a href="/blog-category/engineering" target="_blank" class="tag-2 w-inline-block"><div class="text-block-230">Engineering</div></a></div></div></div></div><img src="https://cdn.prod.website-files.com/683882630fceea3de6f5776a/683f2df449811574aa6f5bb5_character.ai.svg" loading="lazy" alt="" class="image-103 w-condition-invisible w-dyn-bind-empty"/><div class="text-size-small text-weight-semibold"><span fs-readtime-element="time" class="text-span-56">5</span> min read</div></div></div><h1 class="heading-style-h2 spoo">A Trip Down Memory Lane: How We Resolved a Memory Leak When pprof Failed Us</h1><div class="w-embed"><style>
.heading-style-h2 {
text-wrap: pretty;
}
</style></div></div></div></div></div></div></div></header><section class="section_content28"><div class="padding-global"><div class="padmay"><div class="container-large"><div class="blogmeta bigmeta"><div class="div-block-64"><div class="div-block-464"><a href="/blog" class="link-block-33 _450676 z abo w-inline-block"><div class="icon-embed-xxsmall-209 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M232 56a104.2 104.2 0 0 1-104 104H51.3l34.4 34.3a8.1 8.1 0 0 1 0 11.4a8.2 8.2 0 0 1-11.4 0l-48-48a8.1 8.1 0 0 1 0-11.4l48-48a8.1 8.1 0 0 1 11.4 11.4L51.3 144H128a88.1 88.1 0 0 0 88-88a8 8 0 0 1 16 0Z"></path></svg></div><div>Back To Blog</div></a></div><div class="div-block-465"><a href="https://www.warpstream.com/contact-us#subscribe" target="_blank" class="link-block-33 _450676 z w-inline-block"><div>Subscribe</div><div class="icon-embed-xxsmall-258 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="m224 56l-96 88l-96-88Z" opacity=".2"></path><path fill="currentColor" d="M224 48H32a8 8 0 0 0-8 8v136a16 16 0 0 0 16 16h176a16 16 0 0 0 16-16V56a8 8 0 0 0-8-8Zm-83.9 74L128 133.1L52.6 64h150.8Zm-41.4 6L40 181.8V74.2Zm11.8 10.9l12.1 11a8 8 0 0 0 10.8 0l12.1-11l57.9 53.1H52.6Zm46.8-10.9L216 74.2v107.6Z"></path></svg></div></a><a href="https://www.warpstream.com/blog/rss.xml" target="_blank" class="link-block-33 _450676 w-inline-block"><div>RSS</div><div class="icon-embed-xxsmall-257 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M98.9 157.1A71.6 71.6 0 0 1 120 208a8 8 0 0 1-16 0a56 56 0 0 0-56-56a8 8 0 0 1 0-16a71.6 71.6 0 0 1 50.9 21.1ZM48 88a8 8 0 0 0 0 16a102.9 102.9 0 0 1 73.5 30.5A102.9 102.9 0 0 1 152 208a8 8 0 0 0 16 0A119.8 119.8 0 0 0 48 88Zm118.8 1.2A166.9 166.9 0 0 0 48 40a8 8 0 0 0 0 16a151.1 151.1 0 0 1 107.5 44.5A151.1 151.1 0 0 1 200 208a8 8 0 0 0 16 0a166.9 166.9 0 0 0-49.2-118.8ZM52 192a12 12 0 1 0 12 12a12 12 0 0 0-12-12Z"></path></svg></div></a></div></div></div><div class="content28_component blogbottom"><div id="w-node-_5aa3e456-6444-848a-1fe0-e2be77ec7eb9-e6f5774a" class="max-width-large blogwrap"><div id="author" class="authorbio"><div class="div-block-714"><div class="div-block-712"><div class="div-block-713"><div class="icon-embed-xxsmall-405 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M128 32a96 96 0 0 0-64.2 167.4A72 72 0 0 1 128 160a40 40 0 1 1 40-40a40 40 0 0 1-40 40a72 72 0 0 1 64.2 39.4A96 96 0 0 0 128 32Z" opacity=".2"></path><path fill="currentColor" d="M232 128a104 104 0 1 0-174.2 76.7l1.3 1.2a104 104 0 0 0 137.8 0l1.3-1.2A103.7 103.7 0 0 0 232 128Zm-192 0a88 88 0 1 1 153.8 58.4a79.2 79.2 0 0 0-36.1-28.7a48 48 0 1 0-59.4 0a79.2 79.2 0 0 0-36.1 28.7A87.6 87.6 0 0 1 40 128Zm56-8a32 32 0 1 1 32 32a32.1 32.1 0 0 1-32-32Zm-21.9 77.5a64 64 0 0 1 107.8 0a87.8 87.8 0 0 1-107.8 0Z"></path></svg></div><div class="text-block-335">Ella Chao</div></div><div class="div-block-711"><div class="div-block-718"><div class="icon-embed-xxsmall-403 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="m229.7 157.7l-48 48a8.2 8.2 0 0 1-11.4 0a8.1 8.1 0 0 1 0-11.4l34.4-34.3H128A104.2 104.2 0 0 1 24 56a8 8 0 0 1 16 0a88.1 88.1 0 0 0 88 88h76.7l-34.4-34.3a8.1 8.1 0 0 1 11.4-11.4l48 48a8.1 8.1 0 0 1 0 11.4Z"></path></svg></div><div class="text-block-334">Software Engineer</div></div></div></div></div><div class="div-block-712 right"><div><div class="div-block-716"><div class="icon-embed-xxsmall-404 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M40 88h176V48a8 8 0 0 0-8-8H48a8 8 0 0 0-8 8Z" opacity=".2"></path><path fill="currentColor" d="M208 32h-24v-8a8 8 0 0 0-16 0v8H88v-8a8 8 0 0 0-16 0v8H48a16 16 0 0 0-16 16v160a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16ZM72 48v8a8 8 0 0 0 16 0v-8h80v8a8 8 0 0 0 16 0v-8h24v32H48V48Zm136 160H48V96h160v112Z"></path></svg></div><div class="text-block-335">April 2, 2025</div></div></div><div class="div-block-715"><a id="perma" data-w-id="a0dc6c7d-3849-d842-2ce0-e69b2cce84b3" href="#" class="link-block-86 perma-link w-inline-block"><div class="div-block-717"><div class="div-block-726"><div id="click-clack" fs-copyclip-element="click" class="icon-embed-xsmall-38 spectro w-embed"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M20.9999 7.66008V8.00008C21.0007 9.06616 20.576 10.0885 19.8199 10.84L16.9999 13.67C16.4738 14.1911 15.6261 14.1911 15.1 13.67L15 13.56C14.8094 13.3656 14.8094 13.0544 15 12.86L18.4399 9.42006C18.807 9.03938 19.0083 8.52883 18.9999 8.00008V7.66008C19.0003 7.12705 18.788 6.61589 18.4099 6.2401L17.7599 5.59011C17.3841 5.21207 16.873 4.99969 16.3399 5.00011H15.9999C15.4669 4.99969 14.9558 5.21207 14.58 5.59011L11.14 9.00007C10.9456 9.19064 10.6344 9.19064 10.44 9.00007L10.33 8.89007C9.8089 8.36394 9.8089 7.51623 10.33 6.99009L13.16 4.15012C13.9165 3.40505 14.9382 2.99133 15.9999 3.00014H16.3399C17.4011 2.9993 18.4191 3.42018 19.1699 4.17012L19.8299 4.83012C20.5798 5.5809 21.0007 6.59891 20.9999 7.66008ZM8.64993 13.94L13.9399 8.65008C14.0338 8.55543 14.1616 8.50218 14.2949 8.50218C14.4282 8.50218 14.556 8.55543 14.6499 8.65008L15.3499 9.35007C15.4445 9.44395 15.4978 9.57175 15.4978 9.70507C15.4978 9.83839 15.4445 9.96618 15.3499 10.0601L10.0599 15.35C9.96604 15.4447 9.83824 15.4979 9.70492 15.4979C9.57161 15.4979 9.44381 15.4447 9.34993 15.35L8.64993 14.65C8.55528 14.5561 8.50204 14.4283 8.50204 14.295C8.50204 14.1617 8.55528 14.0339 8.64993 13.94ZM13.5599 15C13.3655 14.8094 13.0543 14.8094 12.8599 15L9.42993 18.41C9.0517 18.7905 8.53645 19.003 7.99995 18.9999H7.65995C7.12691 19.0004 6.61576 18.788 6.23997 18.41L5.58997 17.76C5.21194 17.3842 4.99956 16.873 4.99998 16.34V16C4.99956 15.4669 5.21194 14.9558 5.58997 14.58L9.00993 11.14C9.2005 10.9456 9.2005 10.6345 9.00993 10.44L8.89993 10.33C8.3738 9.80894 7.52609 9.80894 6.99996 10.33L4.17999 13.16C3.42392 13.9116 2.99916 14.9339 3 16V16.35C3.00182 17.4077 3.42249 18.4216 4.16999 19.1699L4.82998 19.8299C5.58076 20.5799 6.59878 21.0008 7.65995 20.9999H7.99995C9.05338 21.0061 10.0667 20.5964 10.8199 19.8599L13.6699 17.01C14.191 16.4838 14.191 15.6361 13.6699 15.11L13.5599 15Z" fill="CurrentColor"/>
</svg></div><div class="icon-embed-xxsmall-406 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M104 196a12.2 12.2 0 0 1-8.5-3.5l-56-56a12 12 0 0 1 17-17L104 167L207.5 63.5a12 12 0 0 1 17 17l-112 112a12.2 12.2 0 0 1-8.5 3.5Z"></path></svg></div></div><div class="text-block-334 url">a-trip-down-memory-lane-how-we-resolved-a-memory-leak-when-pprof-failed-us</div></div></a></div></div><div class="code-embed-42 w-embed"><style>
/* Break the min-width chain at the grid item level */
.max-width-large.blogwrap {
min-width: 0;
}
/* Ensure authorbio fills available width and flex children can shrink */
.authorbio {
width: 100%;
min-width: 0;
}
.authorbio .div-block-714,
.authorbio .div-block-712,
.authorbio .div-block-713,
.authorbio .div-block-711,
.authorbio .div-block-715,
.authorbio .div-block-717,
.authorbio .div-block-718 {
min-width: 0;
}
</style></div></div><div class="code-embed-22 w-embed w-script"><style>
.hn-disclaimer {
display: none; /* Initially hide the div */
margin-top: 1rem;
border-radius: 6px;
padding: 2rem;
border: 1px solid rgba(58, 33, 237, 1);
box-shadow: 5px 5px rgba(58, 33, 237, 0.2);
font-size: .9rem !important;
color: rgba(58, 33, 237, 1);
margin-bottom: 3rem;
}
</style>
<div class="hn-disclaimer">
<strong>HN Disclosure:</strong> WarpStream sells a drop-in replacement for Apache Kafka built directly on-top of object storage.
</div>
<script type="text/javascript">
document.addEventListener("DOMContentLoaded", function() {
var referrer = document.referrer;
if (referrer.includes("news.ycombinator.com")) {
document.querySelector(".hn-disclaimer").style.display = "block"; // Show the div if the referrer is Hacker News
}
});
</script></div><div fs-readtime-element="contents" fs-toc-element="contents" fs-codehighlight-element="code" fs-toc-offsettop="5.5rem" fs-richtext-element="rich-text" fs-codehighlight-theme="github" class="text-rich-text w-richtext"><h2>Backstory</h2><p>A couple of weeks ago, we noticed that the &lt;span class=&quot;codeinline&quot;&gt;HeapInUse&lt;/span&gt; metric reported by the Go runtime, which tracks the number of in-use bytes on the heap, looked like the following for the WarpStream control plane:</p><figure style="max-width:852pxpx" class="w-richtext-align-fullwidth w-richtext-figure-type-image"><div><img loading="lazy" alt="" src="https://cdn.prod.website-files.com/683882630fceea3de6f57776/683882630fceea3de6f57d07_AD_4nXe56vzeVniqYwc3cubTGdYD2aALVqLAoYBqH-5nEvFdHenTwuXUG39RjFY6pojgwUoqdr-MAtEkpnSxHijdkxd337m8HBuYZAvwFfv1OLIbeGXhqDl4kjBWDU4d-s5Vq2bM1wOvZg.png"/></div><figcaption>Figure 1: The <strong>HeapInUse</strong> metric for the control plane showed signs of a memory leak.</figcaption></figure><p>This was alarming, as the linear increase strongly indicates a memory leak. The leak was very slow, and our control planes are deployed almost daily (sometimes multiple times per day), so while the memory leak didn’t represent an immediate issue, we wanted to get to the bottom of it.</p><h2>Initial Approach</h2><p>The WarpStream control plane is written in Go, which has excellent built-in support for debugging application memory issues with <a target="_blank" href="https://pkg.go.dev/runtime/pprof">pprof</a>. We’ve used pprof hundreds of times in the past to debug performance issues, and usually memory leaks are particularly easy to spot. </p><p>The pprof heap profiles can be used to see which objects are still “live” on the heap as of the latest garbage collection run, so figuring out the source of a memory leak is usually as simple as grabbing a couple of heap profiles at different points in time. The differences in the memory occupied by live objects will explain the leak.</p><p>As expected, comparing heap profiles taken at different times showed something very suspicious:</p><figure style="max-width:1600pxpx" class="w-richtext-align-fullwidth w-richtext-figure-type-image"><div><img loading="lazy" alt="" src="https://cdn.prod.website-files.com/683882630fceea3de6f57776/683882630fceea3de6f57d0f_Frame%201%20(3).png"/></div><figcaption>Figure 2: Comparing profiles showed a significant increase in the size of the live compaction jobs.</figcaption></figure><p>The profile on the right, which was taken later, showed that the size of the live &lt;span class=&quot;codeinline&quot;&gt;FileMetadata&lt;/span&gt; objects created by the compaction scheduler almost doubled! To understand what the profile is telling us here, we have to get into WarpStream’s job scheduling framework briefly.</p><h2>Job Scheduling in WarpStream</h2><p>For a WarpStream cluster to function efficiently, a few background jobs need to run regularly. An example of such a job is the <a target="_blank" href="https://docs.warpstream.com/warpstream/overview/architecture/write-path#file-compaction">compaction jobs</a> that periodically rewrite and merge the data files in object storage. These jobs run in the Agent, but are scheduled by the control plane. </p><p>To orchestrate these jobs, a polling model is used as shown in Figure 3 below. The control plane maintains a job queue to which the various job schedulers submit jobs. The Agent will periodically poll the control plane for outstanding jobs to run, and once a job is completed, an acknowledgement is sent back to the control plane, allowing the control plane to remove the specified job from the queue. Additionally, the control plane regularly scans the jobs in the job queue to remove jobs it considers timed out, preventing queue buildup.</p><figure style="max-width:2238pxpx" class="w-richtext-align-fullwidth w-richtext-figure-type-image"><div><img loading="lazy" alt="" src="https://cdn.prod.website-files.com/683882630fceea3de6f57776/683882630fceea3de6f57d0e_Group%20538%20(3).png"/></div><figcaption>Figure 3: In this high-level overview of WarpStream’s job scheduling framework, jobs are submitted by the various job schedulers into a job queue. The Agent polls from the queue, runs the returned job, and informs the control plane of the job’s completion or failure.</figcaption></figure><h2>Understanding the Leak</h2><p>Knowing how job scheduling works, it was surprising to see the &lt;span class=&quot;codeinline&quot;&gt;FileMetadata&lt;/span&gt; objects being highlighted in the heap profiles. These objects, serving as inputs for the compaction jobs, have a pretty deterministic lifecycle: they should be removed from the queue and eventually garbage collected as compaction jobs complete or time out. </p><p>So, how can we explain the increased memory usage due to these &lt;span class=&quot;codeinline&quot;&gt;FileMetadata&lt;/span&gt; objects? We had two hypotheses:</p><ol role="list"><li>The queue size was growing.</li><li>The queue was unintentionally retaining references to the jobs.</li></ol><p>With our logs and metrics, the first hypothesis was ruled out. To confirm the second one, we carefully went through the job queue code, spotted and fixed a potential source of leak, and yet the fix did not stop the leak. Much of this relied on our familiarity with the codebase, so even when we thought we had a fix, there was no concrete proof.</p><p>We were stumped. We set out thinking that profiling would provide all the answers, but were left perplexed. With no remaining hypothesis to validate, we had to revisit the fundamentals.</p><h2>Garbage Collection Internals</h2><p>The Go runtime comes with a <a target="_blank" href="https://tip.golang.org/doc/gc-guide">garbage collector (GC)</a> and most of the time we don’t have to think about how it works, until we need to understand why a certain object is being retained. The fact that the &lt;span class=&quot;codeinline&quot;&gt;FileMetadata&lt;/span&gt; objects showed up in the in-use space view of the heap profiles means that the GC still considered them live. But what does that mean?</p><p>The Go GC employs the mark-sweep algorithm, meaning its cycles include a mark phase and a sweep phase. The mark phase figures out if an object is reachable and the sweep phase reclaims the unreachable objects determined from the mark phase. </p><p>To figure out whether an object is reachable, the GC has to traverse the object graph starting from the GC roots marking objects referenced by reachable objects as reachable. The complete list of GC roots can be found below, but examples include global variables and live goroutine stacks.</p><div class="w-embed"><pre><code>func markroot(gcw *gcWork, rootIndex uint32) {
switch getRootType(rootIndex):
case DATA_SEGMENT:
markGlobalVariables(gcw, rootIndex)
case BSS_SEGMENT:
markGlobalVariables(gcw, rootIndex)
case FINALIZER:
scanFinalizers(gcw)
case DEAD_GOROUTINE_STACK:
freeDeadGoroutineStacks(gcw)
case SPAN_WITH_SPECIALS:
scanSpansWithSpecials(gcw, rootIndex)
default:
scanGoroutineStacks(gcw, rootIndex)
}</code></pre></div><p>&lt;figcaption&gt;Figure 4: Pseudocode based on the Go GC’s <a target="_blank" href="https://github.com/golang/go/blob/master/src/runtime/mgcmark.go#L150-L256">logic</a> showing the mark phase starting from the GC roots.&lt;/figcaption&gt;</p><p>‍</p><p>That means that for the &lt;span class=&quot;codeinline&quot;&gt;FileMetadata&lt;/span&gt; objects to be retained, they must be traceable back to some GC root. The question then became: could we figure out the precise chain of object references leading to the &lt;span class=&quot;codeinline&quot;&gt;FileMetadata&lt;/span&gt; objects? Unfortunately, this isn’t something that pprof could help with.</p><h2>Core Dumps to the Rescue</h2><p>The heap profiles were very effective at telling us the <em>allocation</em> sites of live objects, but provided no insights into why specific objects were being <em>retained</em>. Getting the GC roots of these objects would be crucial for understanding the leak. </p><p>For that, we used <a target="_blank" href="https://sourceware.org/gdb/current/onlinedocs/gdb.html/gcore-man.html">gcore</a> from gdb to take a core dump of the control plane process in our staging environment by running the following command: </p><div class="w-embed"><pre><code>gcore &lt;pid&gt;</code></pre></div><p>‍</p><p>However, raw core dumps can be notoriously difficult to interpret. While the snapshot of the heap from the core dump tells us about object relationships, understanding what those objects <em>mean</em> in the context of our application is a whole other challenge. So, we turned to <a target="_blank" href="https://pkg.go.dev/golang.org/x/debug/cmd/viewcore">viewcore</a> for analysis, as it enriches the core dump with <a target="_blank" href="https://dwarfstd.org/">DWARF</a> debugging information and provides handy utilities for exploring the state of the dumped process.</p><p>We ran the following commands to see the live &lt;span class=&quot;codeinline&quot;&gt;FileMetadata&lt;/span&gt; objects along with their virtual addresses:</p><div class="w-embed"><pre><code>viewcore &lt;corefile&gt; objects > objs.txt 
cat objs.txt | grep streampb.FileMetadata</code></pre></div><p>‍</p><p>The resulting output looked like this:</p><div class="w-embed"><div class="outblock">
c097bc8000 githuburl/pkg/stream/pb/streampb.FileMetadata<br>
c097bc8140 githuburl/pkg/stream/pb/streampb.FileMetadata<br>
c097bc8280 githuburl/pkg/stream/pb/streampb.FileMetadata<br>
c097bc9680 githuburl/pkg/stream/pb/streampb.FileMetadata<br>
c097bc97c0 githuburl/pkg/stream/pb/streampb.FileMetadata<br>
c097bc9900 githuburl/pkg/stream/pb/streampb.FileMetadata<br>
c097bc9a40 githuburl/pkg/stream/pb/streampb.FileMetadata<br>
c097bc9b80 githuburl/pkg/stream/pb/streampb.FileMetadata<br>
c097bc9cc0 githuburl/pkg/stream/pb/streampb.FileMetadata<br>
c097bc9e00 githuburl/pkg/stream/pb/streampb.FileMetadata<br>
c097bd0000 githuburl/pkg/stream/pb/streampb.FileMetadata<br>
c097bd0140 githuburl/pkg/stream/pb/streampb.FileMetadata<br>
c097bd0280 githuburl/pkg/stream/pb/streampb.FileMetadata
</div></div><p>&lt;figcaption&gt;Figure 5: A sample of the live <strong>FileMetadata</strong> objects that viewcore showed from the core dump.&lt;/figcaption&gt;</p><p>‍</p><p>To get the GC root information for a given object, we ran: </p><div class="w-embed"><pre><code>viewcore &lt;corefile&gt; reachable &lt;address&gt;</code></pre></div><p>‍</p><p>That gave us the chain of references shown below:</p><div class="w-embed"><div class="outblock">
(viewcore) reachable c028dba000<br>
githuburl/pkg/deadscanner.(*Scheduler).RunAsync.GoWithRecover.func3<br>
githuburl/pkg/deadscanner.(*Scheduler).RunAsync.func1<br>
githuburl/pkg/deadscanner.(*Scheduler).scheduleJobsLoop.s →<br>
c0148e7b00 githuburl/pkg/deadscanner.Scheduler .queue.data →<br>
c00dc67680 githuburl/pkg/jobs.backoffJobQueue .queue.data →<br>
c002e45f00 githuburl/pkg/jobs.balancedJobQueue .queue.data →<br>
c00294a930 githuburl/pkg/jobs.multiPriorityJobQueue .queuesInOrder.ptr →<br>
c002714eb8 [3]*githuburl/pkg/jobs.pq [0] -><br>
c0029518c0 githuburl/pkg/jobs.pq.q→<br>
c00dc67380 githuburl/pkg/jobs.jobQueue .queues → c00d67320 githuburl/pkg/jobs.jobTypeQueues ._queuesByType →<br>
c00294a6f0 hash&lt;githuburl/pkg/stream/pb/agentpoolpb.JobType,*githuburl/pkg/jobs.jobTypeQueue&gt;.buckets →<br>
c0303464d0 bucket&lt;githuburl/pkg/stream/pb/agentpoolpb.JobType,*githuburl/pkg/jobs.jobTypeQueue&gt; .values[1] →<br>
c010c40180 githuburl/pkg/jobs.jobTypeQueue .inflight →<br>
c002717830 hash&lt;string,githuburl/pkg/jobs.inflightEntry&gt; .buckets →<br>
c0437ec000 [33+4?]bucket&lt;string,githuburl/pkg/jobs.inflightEntry&gt; [0].values[0].onAck → fO<br>
c026225dc0 unk112 f56 →<br>
c02fb58f00 githuburl/pkg/stream/pb/agentpoolpb.JobInput .CompactionJob →<br>
c028dbba40 githuburl/pkg/stream/pb/agentpoolpb.CompactionJobInput .Files.ptr -><br>
c027ea9b00 [32]*githuburl/pkg/stream/pb/streampb.FileMetadata [11] →<br>
c028dba000 githuburl/pkg/stream/pb/streampb.FileMetadata
</div></div><p>&lt;figcaption&gt;Figure 6: The precise chain of references from a <strong>FileMetadata</strong> object to a GC root.&lt;/figcaption&gt;</p><p>‍</p><h2>Root Causing the Leak</h2><p>Now this chain of references from the core dump revealed something less obvious. That is, these &lt;span class=&quot;codeinline&quot;&gt;FileMetadata&lt;/span&gt; objects, which we said were created by the <em>compaction</em> scheduler, were retained by the <em>deadscanner</em> scheduler, which is used to scan and remove files in the object store that are no longer tracked by the control plane. </p><p>This gave us another angle to consider: how could the deadscanner scheduler possibly be retaining jobs that it did not create? As revealed by the object relationship from Figure 6 and the diagram from Figure 3, the compaction and deadscanner schedulers share a reference to the same job queue. Consequently, the fact that a compaction job is not retained by the compaction scheduler, and rather the deadscanner scheduler, implies that the compaction scheduler had terminated already, while the deadscanner scheduler continued to run. </p><p>This behavior was unexpected. All job schedulers for a virtual cluster are bundled into a single computational unit called an actor, and the actor dictates the lifecycle of its internal components. Consequently, the various schedulers shut down if and only if the job actor shuts down. At least, that’s how it’s supposed to work!</p><figure style="max-width:2048pxpx" class="w-richtext-align-fullwidth w-richtext-figure-type-image"><div><img loading="lazy" alt="" src="https://cdn.prod.website-files.com/683882630fceea3de6f57776/683882630fceea3de6f57d0d_Group%20539%20(1).png"/></div><figcaption>Figure 7: The WarpStream control plane is multi-tenant. The job actors for different virtual clusters are distributed among the control plane replicas.</figcaption></figure><p>That information narrowed down the scope of the search, and upon investigation, we discovered that the memory leak could be attributed to a goroutine leak in the deadscanner scheduler. The important code snippet is reproduced below: </p><div class="w-embed"><pre><code>func (s *Scheduler) RunAsync(ctx context.Context) {
go s.scheduleJobsLoop(ctx)
}
func (s *Scheduler) scheduleJobsLoop(ctx context.Context) {
t := time.NewTicker(s.config.Interval)
defer t.Stop()
for {
select {
case <-ctx.Done():
return
case <-t.C:
if err := s.runOnce(ctx); err != nil {
s.logger.Error("run_failure", err)
}
}
}
}
func (s *Scheduler) runOnce(ctx context.Context) error {
ctx, cc := context.WithTimeout(ctx, time.Hour)
defer cc()
jobInput := createJobInput()
for {
outcome, err := s.queue.Submit(ctx, jobInput)
if err != nil {
return fmt.Errorf("error submitting job: %w", err)
}
if outcome.Success() {
break
}
if outcome.Backoff {
break
}
if outcome.Backpressured {
// Queue is currently full, retry the submission.
}
time.Sleep(100 * time.Millisecond)
}
return nil
}
</code></pre></div><p>‍</p><p>The scheduler runs in background and periodically schedules jobs for the Agents to execute. These jobs are submitted to a queue, and we block on job submission until one of the terminating conditions is met. The rationale is simple: if the queue is full at the time of the submission, the scheduler will wait for inflight jobs to complete and queue slots to become available. </p><p>And that precisely was the cause of the leak. When a job actor is shutting down, it signals to the contained job schedulers that a shutdown is in progress by canceling the context passed to the &lt;span class=&quot;codeinline&quot;&gt;RunAsync&lt;/span&gt; function. </p><p>However, there is a catch. If the deadscanner scheduler is busy spinning inside the for loop in &lt;span class=&quot;codeinline&quot;&gt;runOnce&lt;/span&gt; due to a back-pressured signal indicating a full queue at the time of the context cancellation, it will not be aware of the cancellation! What is worse is that during job actor shutdown, the queue will most likely be full because the queue will not be serving poll requests from the Agents anymore, and the outstanding jobs will remain, causing job submission to be backpressure continuously, and the goroutine from the deadscanner scheduler to be stuck.</p><p>The fix was simple. All we needed to do was to make the job queue submission function check for context cancellation before doing anything else. The deadscanner scheduler will see the job submission error due to an invalid context, break from the loop form &lt;span class=&quot;codeinline&quot;&gt;runOnce&lt;/span&gt;, and shut down properly.</p><div class="w-embed"><pre><code>func (j *jobQueue) submit(
ctx context.Context,
jobInput JobInput,
) (JobOutcome, error) {
if ctxErr := ctx.Err(); ctxErr != nil {
return JobOutcome{}, ctxErr
}
// Continue with job submission.
...
}</code></pre></div><p>&lt;figcaption&gt;Figure 8. The replicated patch to the job queue that returns an error for job submissions with a canceled context.&lt;/figcaption&gt;</p><p>‍</p><p>At this point one might start to wonder when the job actor gets shut down. If this only happened during control plane shutdowns, the effects would have been benign. The reality is more complex. The control plane explicitly shuts down job actors in the following scenarios:</p><ol role="list"><li>A virtual cluster becomes idle.</li><li>A job actor is being migrated to another control plane replica to avoid hotspotting.</li></ol><p>Consider a scenario where a tenant disconnects all their Agents from the control plane. This corresponds to the first case: if a cluster is no longer receiving poll job requests, then the job actor can be purged to free up resources. Scenario 2 is related to the multi-tenant nature of the control plane. </p><p>As shown in Figure 7, every virtual cluster gets its own job actor for isolation, and the various job actors are distributed among the control plane replicas. To avoid overloading individual replicas with memory-intensive job actors, the control plane periodically assesses the memory usage of the replicas. When significant imbalances are detected, it redistributes actors by shutting down an actor on the replica with the highest memory usage and re-spawning it on the replica with the lowest usage. The combination of these two factors led to more frequent and yet less predictable memory leak occurrences.</p><p>To confirm that we had the right fix, we deployed the patch and monitored the &lt;span class=&quot;codeinline&quot;&gt;HeapInUse&lt;/span&gt; metric shown previously in Figure 1. This time, the metric looked a lot healthier:</p><figure style="max-width:844pxpx" class="w-richtext-align-fullwidth w-richtext-figure-type-image"><div><img loading="lazy" alt="" src="https://cdn.prod.website-files.com/683882630fceea3de6f57776/683882630fceea3de6f57d08_AD_4nXdwZbBdPxqWDf8S3oDAVWOT7rNR8slNf22ERwsaeSW3mcqJOydCbd8hsvxdcVfgBCO7uOY5fEwlXD4sS4ZRH9bCBf_Z91W1uNJV6rkpMdIkOh4EOqDYfS1akD7morTAbD69dB14.png"/></div><figcaption>Figure 9: The <strong>HeapInUse</strong> metric for the control plane no longer showed a linear increase after the patch was deployed.</figcaption></figure><h2>Final Thoughts</h2><p>The cause of a memory leak is always more obvious in retrospect. The investigation took several twists and turns before we arrived at the correct solution. So we wondered: could we have approached this more effectively? Since we now know that the root cause was a goroutine leak, we should have been able to rely on the goroutine profiles to uncover the problem.</p><p>It turned out that sometimes the global picture is not very telling. When comparing two profiles showing all goroutines, the leak was not very obvious to the human eye:</p><figure style="max-width:1600pxpx" class="w-richtext-align-fullwidth w-richtext-figure-type-image"><div><img loading="lazy" alt="" src="https://cdn.prod.website-files.com/683882630fceea3de6f57776/683882630fceea3de6f57d09_AD_4nXf-nw1iMvuQ2cziHn5MtMD9V_6hscZLkUqlGTozTMdmGGvOiQuMLvxVMh-0sHjKfI1s8IZgiDc8NOdU03z6SEeO1A5uL7nHFMz4Jt2J12glDlvkqJTi8QK1A6CTcsqFOP5Q4Wsimw.png"/></div><figcaption>Figure 10: A comparison of goroutine profiles for the same period as in Figure 2 showed no significant differences.</figcaption></figure><p>However, when we zoomed in on the offending deadscanner package, a more significant change was revealed: </p><figure style="max-width:1600pxpx" class="w-richtext-align-fullwidth w-richtext-figure-type-image"><div><img loading="lazy" alt="" src="https://cdn.prod.website-files.com/683882630fceea3de6f57776/683882630fceea3de6f57d11_asd.png"/></div><figcaption>Figure 11: A comparison of goroutine profiles for the same period as in Figure 2 showed no significant differences.</figcaption></figure><p>The art of debugging complex systems is simultaneously holding both the system-wide perspective and the microscopic view, and knowing and using the right tools at each level of detail. As we have seen, seemingly subtle changes can have a significant impact on a global level. </p><p>The debugging journey often begins with examining global trends using diagnostic tools like profiling. However, when those observations are inconclusive, isolating the data by specific dimensions can also be beneficial. While the selection of these dimensions might involve some trial and error, the results can still be very insightful. And as a last resort, reverting to the lowest-level tools is always a viable option.</p></div><section class="section_cta7-2 blog"><div class="cta7_component-2"><div class="cta7_content-2"><div class="text-block-185">Get started with WarpStream today and get $400 in credits that never expire. No credit card is required to start.</div></div><div class="cta7_button-row"><div class="button-group"><a href="https://console.warpstream.com/signup" target="_blank" class="button is-small is-icon prettyboxshadow w-inline-block"><div class="text-block-3">Get Started</div><div class="icon-embed-xxsmall-125 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M94.1 184.6c-11.4 33.9-56.6 33.9-56.6 33.9s0-45.2 33.9-56.6Zm90.5-67.9v64.6a8 8 0 0 1-2.4 5.6l-32.3 32.4a8 8 0 0 1-13.5-4.1l-8.4-41.9Zm-45.3-45.3H74.7a8 8 0 0 0-5.6 2.4l-32.4 32.3a8 8 0 0 0 4.1 13.5l41.9 8.4Z" opacity=".2"></path><path fill="currentColor" d="M96.6 177a7.9 7.9 0 0 0-10.1 5c-6.6 19.7-27.9 25.8-40.2 27.7c1.9-12.3 8-33.6 27.7-40.2a8 8 0 1 0-5.1-15.1c-16.4 5.4-28.4 18.4-34.8 37.5a91.8 91.8 0 0 0-4.6 26.6a8 8 0 0 0 8 8a91.8 91.8 0 0 0 26.6-4.6c19.1-6.4 32.1-18.4 37.5-34.8a7.9 7.9 0 0 0-5-10.1Z"></path><path fill="currentColor" d="M227.6 41.8a15.7 15.7 0 0 0-13.4-13.4c-11.3-1.7-40.6-2.5-69.2 26.1l-9 8.9H74.7a16.2 16.2 0 0 0-11.3 4.7l-32.3 32.4a15.9 15.9 0 0 0-4 15.9a16 16 0 0 0 12.2 11.1l39.5 7.9l41.8 41.8l7.9 39.5a16 16 0 0 0 11.1 12.2a14.7 14.7 0 0 0 4.6.7a15.6 15.6 0 0 0 11.3-4.7l32.4-32.3a16.2 16.2 0 0 0 4.7-11.3V120l8.9-9c28.6-28.6 27.8-57.9 26.1-69.2ZM74.7 79.4H120l-39.9 39.9l-37.7-7.5Zm81.6-13.6c7.8-7.8 28.8-25.6 55.5-21.6c4 26.7-13.8 47.7-21.6 55.5L128 161.9L94.1 128Zm20.3 115.5l-32.4 32.3l-7.5-37.7l39.9-39.9Z"></path></svg></div></a></div></div></div><div class="div-block-736"><div class="div-block-735"><div class="text-block-358">Or, get started through a cloud marketplace:</div><div class="div-block-734"><a href="https://aws.amazon.com/marketplace/pp/prodview-aciq4fyplkpgy" target="_blank" class="link-block-90 shadbut w-inline-block"><img src="https://cdn.prod.website-files.com/683882630fceea3de6f5776a/6854a43277293dc830587c6d_aws_marketplace%20(1).svg" loading="lazy" alt="AWS Marketplace logo" class="image-178"/><div>AWS</div></a><a href="https://console.cloud.google.com/marketplace/product/warpstream-public/warpstream" target="_blank" class="link-block-90 shadbut w-inline-block"><img src="https://cdn.prod.website-files.com/683882630fceea3de6f5776a/6854a092e2b0c1127bcb19fb_google_cloud-icon.svg" loading="lazy" alt="" class="image-178"/><div>GCP</div></a></div></div></div></section><div class="w-layout-grid grid-66"><div class="div-block-508"><div class="zeroisbetter smool">Explore WarpStream</div></div><a href="https://www.warpstream.com/migration" class="div-block-642 w-inline-block"><div class="zeroisbetter smool">Why Switch?</div><div class="icon-embed-xxsmall-191 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="m229.7 157.7l-48 48a8.2 8.2 0 0 1-11.4 0a8.1 8.1 0 0 1 0-11.4l34.4-34.3H128A104.2 104.2 0 0 1 24 56a8 8 0 0 1 16 0a88.1 88.1 0 0 0 88 88h76.7l-34.4-34.3a8.1 8.1 0 0 1 11.4-11.4l48 48a8.1 8.1 0 0 1 0 11.4Z"></path></svg></div></a><a href="/bring-your-own-cloud-kafka-data-streaming" class="div-block-507 w-inline-block"><div class="div-block-506"><div>Bring Your Own Cloud</div><div class="icon-embed-xxsmall-133 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M80 128a80 80 0 1 1 80 80H72a56 56 0 0 1 0-112a57.5 57.5 0 0 1 13.9 1.7" opacity=".2"></path><path fill="currentColor" d="M160 40a88 88 0 0 0-78.7 48.7A58.2 58.2 0 0 0 72 88a64 64 0 0 0 0 128h88a88 88 0 0 0 0-176Zm0 160H72a48 48 0 0 1 0-96h3.3a85.7 85.7 0 0 0-3.3 24a8 8 0 0 0 16 0a72 72 0 1 1 72 72Z"></path><path fill="currentColor" d="M186.3 110.3L144 152.7l-18.3-18.4a8.1 8.1 0 0 0-11.4 11.4l24 24a8.2 8.2 0 0 0 11.4 0l48-48a8.1 8.1 0 0 0-11.4-11.4Z"></path></svg></div></div><div class="text-block-255">Deploy in any cloud or self-host, using your own compute and object storage.</div></a><a href="/managed-data-pipelines-kafka-compatible-stream-processing" class="div-block-507 w-inline-block"><div class="div-block-506"><div>Managed Data Pipelines</div><div class="icon-embed-xxsmall-134 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M72 176a28 28 0 1 1-28-28a28 28 0 0 1 28 28Z" opacity=".2"></path><path fill="currentColor" d="m245.7 74.3l-40-40a8.1 8.1 0 0 0-11.4 11.4L220.7 72H176a56 56 0 0 0-56 56a40 40 0 0 1-40 40h-.9a36 36 0 1 0 0 16h.9a56 56 0 0 0 56-56a40 40 0 0 1 40-40h44.7l-26.4 26.3a8.1 8.1 0 0 0 0 11.4a8.2 8.2 0 0 0 11.4 0l40-40a8.1 8.1 0 0 0 0-11.4ZM44 196a20 20 0 1 1 20-20a20.1 20.1 0 0 1-20 20Z"></path></svg></div></div><div class="text-block-255">Managed integrations and connectors. Powerful, scalable stream processing.</div></a><a id="w-node-_770f74e4-2677-c4f5-91ab-0f24f65dea91-e6f5774a" href="/orbit-apache-kafka-migration-and-replication" class="div-block-507 w-inline-block"><div class="div-block-506"><div>Orbit</div><div class="icon-embed-xxsmall-135 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M216 128a88 88 0 1 1-88-88a88 88 0 0 1 88 88Z" opacity=".2"></path><path fill="currentColor" d="M245.8 60c-5.5-9.5-20.3-18.4-59.8-8.5A96 96 0 0 0 32 128a117.3 117.3 0 0 0 .7 12c-28.3 29.2-27.9 46.5-22.5 56c3.7 6.4 11.9 12.8 29.8 12.8a121.7 121.7 0 0 0 25.5-3.2l4.5-1.1A96 96 0 0 0 224 128a117.3 117.3 0 0 0-.7-12l3.1-3.3c25.3-27.5 24.5-43.8 19.4-52.7ZM128 48a80.2 80.2 0 0 1 78.1 62.5c-16.2 15.4-37.8 31.2-62.1 45.2s-48.7 24.9-70.1 31.1A79.9 79.9 0 0 1 128 48ZM24.1 188c-1.5-2.6-.7-7.5 2.3-13.4A85.7 85.7 0 0 1 37.1 159a95.2 95.2 0 0 0 18.7 32.2c-18.7 3.3-29.3 1-31.7-3.2ZM128 208a79.6 79.6 0 0 1-37.9-9.6c19.6-6.8 40.8-16.7 61.9-28.8a373.3 373.3 0 0 0 55.9-39.2A80 80 0 0 1 128 208Zm72.2-143.2a83.9 83.9 0 0 1 19-1.5c6.6.4 11.2 2.1 12.7 4.7c2.4 4.2-.9 14.5-13 29a95.2 95.2 0 0 0-18.7-32.2Z"></path></svg></div></div><div class="text-block-255">Offset-preserving replication from any source Apache Kafka cluster.</div></a><a href="/data-governance-schema-registry-and-validation" class="div-block-507 w-inline-block"><div class="div-block-506"><div>Data Governance</div><div class="icon-embed-xxsmall-136 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><ellipse cx="128" cy="80" fill="currentColor" opacity=".2" rx="88" ry="48"></ellipse><path fill="currentColor" d="M128 24c-53.8 0-96 24.6-96 56v96c0 31.4 42.2 56 96 56s96-24.6 96-56V80c0-31.4-42.2-56-96-56Zm80 104c0 9.6-7.9 19.4-21.6 26.9c-15.5 8.5-36.2 13.1-58.4 13.1s-42.9-4.6-58.4-13.1C55.9 147.4 48 137.6 48 128v-16.6c17.1 14.9 46.2 24.6 80 24.6s62.9-9.7 80-24.6ZM69.6 53.1C85.1 44.6 105.8 40 128 40s42.9 4.6 58.4 13.1C200.1 60.6 208 70.4 208 80s-7.9 19.4-21.6 26.9c-15.5 8.5-36.2 13.1-58.4 13.1s-42.9-4.6-58.4-13.1C55.9 99.4 48 89.6 48 80s7.9-19.4 21.6-26.9Zm116.8 149.8c-15.5 8.5-36.2 13.1-58.4 13.1s-42.9-4.6-58.4-13.1C55.9 195.4 48 185.6 48 176v-16.6c17.1 14.9 46.2 24.6 80 24.6s62.9-9.7 80-24.6V176c0 9.6-7.9 19.4-21.6 26.9Z"></path></svg></div></div><div class="text-block-255">Schema registry, linking, and validation in your own cloud account.</div></a><a href="/multi-region-clusters" class="div-block-507 w-inline-block"><div class="div-block-506"><div>Multi-Region Clusters</div><div class="icon-embed-xxsmall-138 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M80 108v40a8 8 0 0 1-8 8H32a8 8 0 0 1-8-8v-40a8 8 0 0 1 8-8h40a8 8 0 0 1 8 8Zm136-68h-48a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8V48a8 8 0 0 0-8-8Zm0 112h-48a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8Z" opacity=".2"></path><path fill="currentColor" d="M168 112h48a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-48a16 16 0 0 0-16 16v16h-8a32.1 32.1 0 0 0-32 32v24H88v-12a16 16 0 0 0-16-16H32a16 16 0 0 0-16 16v40a16 16 0 0 0 16 16h40a16 16 0 0 0 16-16v-12h24v24a32.1 32.1 0 0 0 32 32h8v16a16 16 0 0 0 16 16h48a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16h-48a16 16 0 0 0-16 16v16h-8a16 16 0 0 1-16-16V96a16 16 0 0 1 16-16h8v16a16 16 0 0 0 16 16Zm-96 36H32v-40h40v40Zm96 12h48v48h-48Zm0-112h48v48h-48Z"></path></svg></div></div><div class="text-block-255">RPO=0: Zero point of failure by default with no ops, tuning, or trade-offs.</div></a><a href="/tableflow" class="div-block-507 w-inline-block"><div class="div-block-506"><div class="div-block-549"><div>Tableflow</div><div class="text-block-266">New!</div></div><div class="div-block-548"><div class="icon-embed-xxsmall-292 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M33.7 77A8 8 0 0 1 35 65.8a81.8 81.8 0 0 1 29.1-13.6c16.1-4 41.1-5 68.3 13.1c42.4 28.3 77.2 1.6 78.6.4a8.2 8.2 0 0 1 11.3 1.3a8 8 0 0 1-1.3 11.2a81.8 81.8 0 0 1-29.1 13.6a81 81 0 0 1-19.7 2.4c-14 0-30.8-3.7-48.6-15.5c-42.4-28.3-77.2-1.6-78.6-.4A8.2 8.2 0 0 1 33.7 77ZM211 121.7c-1.4 1.2-36.2 27.9-78.6-.4c-27.2-18.1-52.2-17.1-68.3-13.1A81.8 81.8 0 0 0 35 121.8a8 8 0 0 0-1.3 11.2a8.2 8.2 0 0 0 11.3 1.3c1.4-1.2 36.2-27.9 78.6.4c17.8 11.8 34.6 15.5 48.6 15.5a81 81 0 0 0 19.7-2.4a81.8 81.8 0 0 0 29.1-13.6a8 8 0 0 0 1.3-11.2a8.2 8.2 0 0 0-11.3-1.3Zm0 56c-1.4 1.2-36.2 27.9-78.6-.4c-27.2-18.1-52.2-17.1-68.3-13.1A81.8 81.8 0 0 0 35 177.8a8 8 0 0 0-1.3 11.2a8.2 8.2 0 0 0 11.3 1.3c1.4-1.2 36.2-27.9 78.6.4c17.8 11.8 34.6 15.5 48.6 15.5a82.6 82.6 0 0 0 48.8-16a8 8 0 0 0 1.3-11.2a8.2 8.2 0 0 0-11.3-1.3Z"></path></svg></div></div></div><div class="text-block-255">Fully-managed iceberg tables, materialized from any Kafka topic.</div></a></div></div><div id="w-node-_5aa3e456-6444-848a-1fe0-e2be77ec7edb-e6f5774a" class="content28_sidebar"><div class="margin-top margin-xsmall"><div class="content28_link-content"><div class="div-block-330"><div class="icon-embed-xxsmall-139 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M208 72v112a8 8 0 0 1-8 8h-24v-88l-40-40H80V40a8 8 0 0 1 8-8h80Z" opacity=".2"></path><path fill="currentColor" d="m213.7 66.3l-40-40A8.1 8.1 0 0 0 168 24H88a16 16 0 0 0-16 16v16H56a16 16 0 0 0-16 16v144a16 16 0 0 0 16 16h112a16 16 0 0 0 16-16v-16h16a16 16 0 0 0 16-16V72a8.1 8.1 0 0 0-2.3-5.7ZM168 216H56V72h76.7l35.3 35.3V216Zm32-32h-16v-80a8.1 8.1 0 0 0-2.3-5.7l-40-40A8.1 8.1 0 0 0 136 56H88V40h76.7L200 75.3Zm-56-32a8 8 0 0 1-8 8H88a8 8 0 0 1 0-16h48a8 8 0 0 1 8 8Zm0 32a8 8 0 0 1-8 8H88a8 8 0 0 1 0-16h48a8 8 0 0 1 8 8Z"></path></svg></div><h3 class="heading-style-h5">Table of contents</h3></div><div class="content28_link-wrapper is-h2"><a href="#" class="content28_link w-inline-block"><div fs-toc-element="link" class="text-size-medium-2">Heading 2</div></a><div fs-toc-element="ix-trigger" data-w-id="5aa3e456-6444-848a-1fe0-e2be77ec7ee6" class="content28_h-trigger"></div></div></div><div class="div-block-70"><a href="https://cal.com/forms/9c5f3fcf-55ee-452b-8df3-0a1098010774" target="_blank" class="div-block-68 w-inline-block"><div class="icon-embed-xxsmall-142 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M208 32h-24v-8a8 8 0 0 0-16 0v8H88v-8a8 8 0 0 0-16 0v8H48a16 16 0 0 0-16 16v160a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16ZM48 48h24v8a8 8 0 0 0 16 0v-8h80v8a8 8 0 0 0 16 0v-8h24v32H48Zm160 160H48V96h160v112Zm-80-44a24 24 0 0 1-41 17a8 8 0 0 1 0-11.3a7.9 7.9 0 0 1 11.3 0a8.3 8.3 0 0 0 5.7 2.3a8 8 0 0 0 0-16a8 8 0 0 1-6.2-13l5.6-7H92a8 8 0 0 1 0-16h28a8 8 0 0 1 6.2 13l-8.8 11.1A23.9 23.9 0 0 1 128 164Zm40-36v52a8 8 0 0 1-16 0v-36l-3.2 2.4a8.1 8.1 0 0 1-11.2-1.6a8 8 0 0 1 1.6-11.2l16-12A8 8 0 0 1 168 128Z"></path></svg></div><div>Talk to an expert</div></a><a href="/migration" target="_blank" class="div-block-68 fw w-inline-block"><div class="icon-embed-xxsmall-341 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M224 128a8 8 0 0 1-8 8H112a8 8 0 0 1 0-16h104a8 8 0 0 1 8 8ZM112 72h104a8 8 0 0 0 0-16H112a8 8 0 0 0 0 16Zm104 112H40a8 8 0 0 0 0 16h176a8 8 0 0 0 0-16ZM34.3 141.7a8.2 8.2 0 0 0 11.4 0l40-40a8.1 8.1 0 0 0 0-11.4l-40-40a8.1 8.1 0 0 0-11.4 11.4L68.7 96l-34.4 34.3a8.1 8.1 0 0 0 0 11.4Z"></path></svg></div><div>Why Switch?</div></a><a href="https://www.warpstream.com/contact-us#subscribe" target="_blank" class="div-block-68 fw w-inline-block"><div class="icon-embed-xxsmall-141 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M224 48H32a8 8 0 0 0-8 8v136a16 16 0 0 0 16 16h176a16 16 0 0 0 16-16V56a8 8 0 0 0-8-8Zm-20.6 16L128 133.1L52.6 64ZM216 192H40V74.2l82.6 75.7a8 8 0 0 0 10.8 0L216 74.2V192Z"></path></svg></div><div>Subscribe  </div></a><a href="/executive-summary" target="_blank" class="div-block-68 fw _89 w-inline-block"><div class="icon-embed-xxsmall-233 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M88 96a8 8 0 0 1 8-8h64a8 8 0 0 1 0 16H96a8 8 0 0 1-8-8Zm8 40h64a8 8 0 0 0 0-16H96a8 8 0 0 0 0 16Zm32 16H96a8 8 0 0 0 0 16h32a8 8 0 0 0 0-16Zm96-104v108.7a15.9 15.9 0 0 1-4.7 11.3L168 219.3a15.9 15.9 0 0 1-11.3 4.7H48a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h160a16 16 0 0 1 16 16ZM48 208h104v-48a8 8 0 0 1 8-8h48V48H48Zm120-40v28.7l28.7-28.7Z"></path></svg></div><div>Executive Summary</div></a><a href="/blog" class="div-block-68 fw lastman w-inline-block"><div class="icon-embed-xxsmall-226 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M208 224h-48a16 16 0 0 1-16-16v-48h-32v48a16 16 0 0 1-16 16H48a16 16 0 0 1-16-16v-92.5a16 16 0 0 1 5.2-11.8l80-72.7a16 16 0 0 1 21.6 0l80 72.7a16 16 0 0 1 5.2 11.8V208a16 16 0 0 1-16 16Zm-96-80h32a16 16 0 0 1 16 16v48h48v-92.5l-80-72.7l-80 72.7V208h48v-48a16 16 0 0 1 16-16Z"></path></svg></div><div>View More Posts</div></a><a data-w-id="e02a1a90-18e8-419d-bb9e-42206bca0bb1" href="https://console.warpstream.com/signup" target="_blank" class="button is-small is-icon prettyboxshadow w-inline-block"><div class="text-block-3">Start For Free</div><div class="icon-embed-xxsmall-125 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M94.1 184.6c-11.4 33.9-56.6 33.9-56.6 33.9s0-45.2 33.9-56.6Zm90.5-67.9v64.6a8 8 0 0 1-2.4 5.6l-32.3 32.4a8 8 0 0 1-13.5-4.1l-8.4-41.9Zm-45.3-45.3H74.7a8 8 0 0 0-5.6 2.4l-32.4 32.3a8 8 0 0 0 4.1 13.5l41.9 8.4Z" opacity=".2"></path><path fill="currentColor" d="M96.6 177a7.9 7.9 0 0 0-10.1 5c-6.6 19.7-27.9 25.8-40.2 27.7c1.9-12.3 8-33.6 27.7-40.2a8 8 0 1 0-5.1-15.1c-16.4 5.4-28.4 18.4-34.8 37.5a91.8 91.8 0 0 0-4.6 26.6a8 8 0 0 0 8 8a91.8 91.8 0 0 0 26.6-4.6c19.1-6.4 32.1-18.4 37.5-34.8a7.9 7.9 0 0 0-5-10.1Z"></path><path fill="currentColor" d="M227.6 41.8a15.7 15.7 0 0 0-13.4-13.4c-11.3-1.7-40.6-2.5-69.2 26.1l-9 8.9H74.7a16.2 16.2 0 0 0-11.3 4.7l-32.3 32.4a15.9 15.9 0 0 0-4 15.9a16 16 0 0 0 12.2 11.1l39.5 7.9l41.8 41.8l7.9 39.5a16 16 0 0 0 11.1 12.2a14.7 14.7 0 0 0 4.6.7a15.6 15.6 0 0 0 11.3-4.7l32.4-32.3a16.2 16.2 0 0 0 4.7-11.3V120l8.9-9c28.6-28.6 27.8-57.9 26.1-69.2ZM74.7 79.4H120l-39.9 39.9l-37.7-7.5Zm81.6-13.6c7.8-7.8 28.8-25.6 55.5-21.6c4 26.7-13.8 47.7-21.6 55.5L128 161.9L94.1 128Zm20.3 115.5l-32.4 32.3l-7.5-37.7l39.9-39.9Z"></path></svg></div><div class="icon-embed-xxsmall-161 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M101.6 187.1c-5.4 16.4-18.4 28.4-37.5 34.8a91.8 91.8 0 0 1-26.6 4.6a8 8 0 0 1-8-8a91.8 91.8 0 0 1 4.6-26.6c6.4-19.1 18.4-32.1 34.8-37.5a8 8 0 1 1 5.1 15.1c-19.7 6.6-25.8 27.9-27.7 40.2c12.3-1.9 33.6-8 40.2-27.7a8 8 0 0 1 15.1 5.1Zm99.9-76.1l-8.9 9v61.3a16.2 16.2 0 0 1-4.7 11.3l-32.4 32.3a15.6 15.6 0 0 1-11.3 4.7a14.7 14.7 0 0 1-4.6-.7a16 16 0 0 1-11.1-12.2l-7.9-39.5l-41.8-41.8l-39.5-7.9a16 16 0 0 1-12.2-11.1a15.9 15.9 0 0 1 4-15.9l32.3-32.4a16.2 16.2 0 0 1 11.3-4.7H136l9-8.9c28.6-28.6 57.9-27.8 69.2-26.1a15.7 15.7 0 0 1 13.4 13.4c1.7 11.3 2.5 40.6-26.1 69.2Zm-159.1.8l37.7 7.5L120 79.4H74.7ZM176.6 136l-39.9 39.9l7.5 37.7l32.4-32.3Z"></path></svg></div></a></div><div class="social-icons1_component"><div class="w-layout-grid social-icons1_list"><a href="https://www.linkedin.com/company/warpstream/" target="_blank" class="social-icons1_link w-inline-block"><div class="icon-embed-xsmall-35 w-embed"><svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.5 3C3.67157 3 3 3.67157 3 4.5V19.5C3 20.3284 3.67157 21 4.5 21H19.5C20.3284 21 21 20.3284 21 19.5V4.5C21 3.67157 20.3284 3 19.5 3H4.5ZM8.52076 7.00272C8.52639 7.95897 7.81061 8.54819 6.96123 8.54397C6.16107 8.53975 5.46357 7.90272 5.46779 7.00413C5.47201 6.15897 6.13998 5.47975 7.00764 5.49944C7.88795 5.51913 8.52639 6.1646 8.52076 7.00272ZM12.2797 9.76176H9.75971H9.7583V18.3216H12.4217V18.1219C12.4217 17.742 12.4214 17.362 12.4211 16.9819V16.9818V16.9816V16.9815V16.9812C12.4203 15.9674 12.4194 14.9532 12.4246 13.9397C12.426 13.6936 12.4372 13.4377 12.5005 13.2028C12.7381 12.3253 13.5271 11.7586 14.4074 11.8979C14.9727 11.9864 15.3467 12.3141 15.5042 12.8471C15.6013 13.1803 15.6449 13.5389 15.6491 13.8863C15.6605 14.9339 15.6589 15.9815 15.6573 17.0292V17.0294C15.6567 17.3992 15.6561 17.769 15.6561 18.1388V18.3202H18.328V18.1149C18.328 17.6629 18.3278 17.211 18.3275 16.7591V16.759V16.7588C18.327 15.6293 18.3264 14.5001 18.3294 13.3702C18.3308 12.8597 18.276 12.3563 18.1508 11.8627C17.9638 11.1286 17.5771 10.5211 16.9485 10.0824C16.5027 9.77019 16.0133 9.5691 15.4663 9.5466C15.404 9.54401 15.3412 9.54062 15.2781 9.53721L15.2781 9.53721L15.2781 9.53721C14.9984 9.52209 14.7141 9.50673 14.4467 9.56066C13.6817 9.71394 13.0096 10.0641 12.5019 10.6814C12.4429 10.7522 12.3852 10.8241 12.2991 10.9314L12.2991 10.9315L12.2797 10.9557V9.76176ZM5.68164 18.3244H8.33242V9.76733H5.68164V18.3244Z" fill="CurrentColor"/>
</svg></div></a><a href="https://bsky.app/profile/warpstream.com" target="_blank" class="social-icons1_link w-inline-block"><div class="icon-embed-xsmall-35 w-embed"><svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M6.33526 4.21162C8.62822 5.97119 11.0945 9.53886 12.0001 11.4535C12.9056 9.53901 15.3718 5.97116 17.6649 4.21162C19.3193 2.94199 22 1.95962 22 5.08557C22 5.70987 21.6498 10.33 21.4444 11.08C20.7306 13.6878 18.1292 14.3529 15.8152 13.9503C19.86 14.654 20.8889 16.9848 18.6668 19.3156C14.4465 23.7423 12.601 18.205 12.1278 16.7861C12.0412 16.526 12.0006 16.4043 12 16.5078C11.9994 16.4043 11.9588 16.526 11.8721 16.7861C11.3993 18.205 9.55378 23.7424 5.33322 19.3156C3.11103 16.9848 4.13995 14.6538 8.18483 13.9503C5.87077 14.3529 3.26934 13.6878 2.55555 11.08C2.35016 10.3299 2 5.7098 2 5.08557C2 1.95962 4.68074 2.94199 6.33515 4.21162H6.33526Z" fill="currentcolor"/>
</svg></div></a><a href="https://x.com/warpstream_labs" target="_blank" class="social-icons1_link w-inline-block"><div class="icon-embed-xsmall-35 w-embed"><svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M17.1761 4H19.9362L13.9061 10.7774L21 20H15.4456L11.0951 14.4066L6.11723 20H3.35544L9.80517 12.7508L3 4H8.69545L12.6279 9.11262L17.1761 4ZM16.2073 18.3754H17.7368L7.86441 5.53928H6.2232L16.2073 18.3754Z" fill="CurrentColor"/>
</svg></div></a><a href="https://www.facebook.com/warpstream" target="_blank" class="social-icons1_link w-inline-block"><div class="icon-embed-xsmall-35 w-embed"><svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M22 12.0611C22 6.50451 17.5229 2 12 2C6.47715 2 2 6.50451 2 12.0611C2 17.0828 5.65684 21.2452 10.4375 22V14.9694H7.89844V12.0611H10.4375V9.84452C10.4375 7.32296 11.9305 5.93012 14.2146 5.93012C15.3088 5.93012 16.4531 6.12663 16.4531 6.12663V8.60261H15.1922C13.95 8.60261 13.5625 9.37822 13.5625 10.1739V12.0611H16.3359L15.8926 14.9694H13.5625V22C18.3432 21.2452 22 17.083 22 12.0611Z" fill="CurrentColor"/>
</svg></div></a><a href="https://www.youtube.com/@WarpStreamLabs" target="_blank" class="social-icons1_link w-inline-block"><div class="icon-embed-xsmall-35 w-embed"><svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M20.5686 4.77345C21.5163 5.02692 22.2555 5.76903 22.5118 6.71673C23.1821 9.42042 23.1385 14.5321 22.5259 17.278C22.2724 18.2257 21.5303 18.965 20.5826 19.2213C17.9071 19.8831 5.92356 19.8015 3.40294 19.2213C2.45524 18.9678 1.71595 18.2257 1.45966 17.278C0.827391 14.7011 0.871044 9.25144 1.44558 6.73081C1.69905 5.78311 2.44116 5.04382 3.38886 4.78753C6.96561 4.0412 19.2956 4.282 20.5686 4.77345ZM9.86682 8.70227L15.6122 11.9974L9.86682 15.2925V8.70227Z" fill="CurrentColor"/>
</svg></div></a></div></div></div></div></div></div></div></div></section><footer class="footer14_component darksection"><div class="padding-global"><div class="container-large-2"><div class="padding-vertical padding-xxhuge"><div class="footer14_cta"><div class="max-width-large-2 foot"><div class="text-style-tagline zar">Streaming That Just Works</div><h2 class="heading-style-h1-2 zavb"><span class="lightgradient">Get Started With WarpStream Today</span></h2></div><div class="div-block-321"><div class="button-group centerbuttons"><a href="https://console.warpstream.com/signup" target="_blank" class="button is-small is-icon prettyboxshadow fix w-inline-block"><div class="text-block-3">Get Started</div><div class="icon-embed-xxsmall w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M101.6 187.1c-5.4 16.4-18.4 28.4-37.5 34.8a91.8 91.8 0 0 1-26.6 4.6a8 8 0 0 1-8-8a91.8 91.8 0 0 1 4.6-26.6c6.4-19.1 18.4-32.1 34.8-37.5a8 8 0 1 1 5.1 15.1c-19.7 6.6-25.8 27.9-27.7 40.2c12.3-1.9 33.6-8 40.2-27.7a8 8 0 0 1 15.1 5.1Zm99.9-76.1l-8.9 9v61.3a16.2 16.2 0 0 1-4.7 11.3l-32.4 32.3a15.6 15.6 0 0 1-11.3 4.7a14.7 14.7 0 0 1-4.6-.7a16 16 0 0 1-11.1-12.2l-7.9-39.5l-41.8-41.8l-39.5-7.9a16 16 0 0 1-12.2-11.1a15.9 15.9 0 0 1 4-15.9l32.3-32.4a16.2 16.2 0 0 1 11.3-4.7H136l9-8.9c28.6-28.6 57.9-27.8 69.2-26.1a15.7 15.7 0 0 1 13.4 13.4c1.7 11.3 2.5 40.6-26.1 69.2Zm-159.1.8l37.7 7.5L120 79.4H74.7ZM94.1 128l33.9 33.9l62.2-62.2c7.8-7.8 25.6-28.8 21.6-55.5c-26.7-4-47.7 13.8-55.5 21.6Zm82.5 8l-39.9 39.9l7.5 37.7l32.4-32.3Z"></path></svg></div></a><a href="/migration" class="button is-secondary is-small is-icon light gfo fix w-inline-block"><div class="text-block-2 lighttext">Why Switch?</div><div class="icon-embed-xxsmall-333 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--carbon" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path fill="currentColor" d="M28 4H4a2 2 0 0 0-2 2v20a2 2 0 0 0 2 2h24a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2m0 22H12v-6h-2v6H4v-9h16.172l-3.586 3.586L18 22l6-6l-6-6l-1.414 1.414L20.172 15H4V6h6v6h2V6h16Z"></path></svg></div></a></div><div class="div-block-482"><div class="text-block-241 fartyh">Get started through a cloud marketplace:</div><a href="https://aws.amazon.com/marketplace/pp/prodview-aciq4fyplkpgy" target="_blank" class="cloudmarket w-inline-block"><img src="https://cdn.prod.website-files.com/683882630fceea3de6f5776a/6854a2ca4fa4edc9c53c8a71_aws_marketplace.svg" loading="lazy" alt="AWS Marketplace logo" class="awsmarket bigger"/></a><a href="https://console.cloud.google.com/marketplace/product/warpstream-public/warpstream" target="_blank" class="cloudmarket w-inline-block"><img src="https://cdn.prod.website-files.com/683882630fceea3de6f5776a/6854a128ac3a3262e7a3509e_gcp%20(1).svg" loading="lazy" alt="Google Cloud Platform Marketplace logo" class="gcp bigger"/></a></div></div><div class="div-block-469"><div class="w-embed w-script"><style>
.ws-status {
display: inline-flex;
align-items: center;
gap: 8px;
font-family: "Plus Jakarta Sans", system-ui, -apple-system, sans-serif;
font-size: 0.8125rem;
font-weight: 500;
line-height: 1;
color: rgba(255, 255, 255, 0.7);
text-decoration: none;
padding: 8px 14px 9px 14px;
border: 1px solid rgba(255, 255, 255, 0.2);
border-radius: 9999px;
background: rgba(255, 255, 255, 0);
transition: color 0.15s ease, border-color 0.15s ease, background-color 0.15s ease;
}
.ws-status:hover {
color: rgba(255, 255, 255, 0.95);
border-color: rgba(255, 255, 255, 0.28);
background: rgba(255, 255, 255, 0.06);
}
.ws-status-dot {
position: relative;
width: 8px;
height: 8px;
border-radius: 50%;
background: #9ca3af;
flex-shrink: 0;
}
.ws-status-dot::after {
content: "";
position: absolute;
inset: -3px;
border-radius: 50%;
background: inherit;
opacity: 0;
}
.ws-status.ws-ok .ws-status-dot { background: #22c55e; }
.ws-status.ws-minor .ws-status-dot { background: #eab308; }
.ws-status.ws-major .ws-status-dot { background: #f97316; }
.ws-status.ws-critical .ws-status-dot { background: #ef4444; }
.ws-status.ws-maint .ws-status-dot { background: #3b82f6; }
.ws-status:not(.ws-loading) .ws-status-dot::after {
animation: ws-pulse 1.8s ease-out infinite;
opacity: 1;
}
@keyframes ws-pulse {
0% { transform: scale(1); opacity: 0.45; }
100% { transform: scale(1.9); opacity: 0; }
}
@media (prefers-reduced-motion: reduce) {
.ws-status .ws-status-dot::after { animation: none; }
}
.ws-status-uptime {
display: inline-flex;
align-items: center;
opacity: 1;
font-weight: 700;
font-variant-numeric: tabular-nums;
}
.ws-status-uptime::before {
content: "";
width: 3px;
margin-top: 3px;
height: 3px;
border-radius: 50%;
background: currentColor;
opacity: 0.5;
margin-right: 8px;
flex-shrink: 0;
}
.ws-status-uptime:empty { display: none; }
</style>
<a class="ws-status ws-loading" href="https://status.warpstream.com/" target="_blank" rel="noopener" aria-live="polite">
<span class="ws-status-dot" aria-hidden="true"></span>
<span class="ws-status-text">Status</span>
<span class="ws-status-uptime"></span>
</a>
<script>
(function () {
var el = document.currentScript.previousElementSibling;
if (!el || !el.classList || !el.classList.contains("ws-status")) return;
var textEl = el.querySelector(".ws-status-text");
var uptimeEl = el.querySelector(".ws-status-uptime");
var MAP = {
none: { cls: "ws-ok", label: "All systems operational" },
minor: { cls: "ws-minor", label: "Minor service issue" },
major: { cls: "ws-major", label: "Major service issue" },
critical: { cls: "ws-critical", label: "Critical service issue" },
maintenance: { cls: "ws-maint", label: "Scheduled maintenance" }
};
var base = "https://status.warpstream.com/api/v2/";
Promise.allSettled([
fetch(base + "status.json", { cache: "no-store" }).then(function (r) { return r.ok ? r.json() : Promise.reject(); }),
fetch(base + "incidents.json", { cache: "no-store" }).then(function (r) { return r.ok ? r.json() : Promise.reject(); })
]).then(function (results) {
el.classList.remove("ws-loading");
if (results[0].status === "fulfilled") {
var s = results[0].value.status || {};
var m = MAP[s.indicator] || MAP.none;
el.classList.add(m.cls);
textEl.textContent = s.description || m.label;
} else {
textEl.textContent = "Status";
}
if (results[1].status === "fulfilled" && uptimeEl) {
var incidents = results[1].value.incidents || [];
uptimeEl.textContent = formatUptime(calcUptime(incidents)) + " last 90 days";
}
});
function calcUptime(incidents) {
var now = Date.now();
var windowMs = 90 * 24 * 60 * 60 * 1000;
var cutoff = now - windowMs;
var intervals = [];
for (var i = 0; i < incidents.length; i++) {
var inc = incidents[i];
if (inc.impact === "none") continue;
var s = Date.parse(inc.started_at);
var e = inc.resolved_at ? Date.parse(inc.resolved_at) : now;
if (!s || !e || e < cutoff) continue;
if (s < cutoff) s = cutoff;
intervals.push([s, e]);
}
intervals.sort(function (a, b) { return a[0] - b[0]; });
var merged = [];
for (var j = 0; j < intervals.length; j++) {
var iv = intervals[j];
if (merged.length && iv[0] <= merged[merged.length - 1][1]) {
merged[merged.length - 1][1] = Math.max(merged[merged.length - 1][1], iv[1]);
} else {
merged.push([iv[0], iv[1]]);
}
}
var down = 0;
for (var k = 0; k < merged.length; k++) down += merged[k][1] - merged[k][0];
return (windowMs - down) / windowMs * 100;
}
function formatUptime(pct) {
if (pct >= 99.9995) return "100%";
return pct.toFixed(2) + "%";
}
})();
</script></div></div><a href="https://www.warpstream.com/contact-us#subscribe" class="div-block-325 w-inline-block"><div class="text-block-98"><span class="text-span-16">Join our mailing list to stay up to date</span></div><div class="icon-embed-xxsmall-126 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="m229.7 157.7l-48 48a8.2 8.2 0 0 1-11.4 0a8.1 8.1 0 0 1 0-11.4l34.4-34.3H128A104.2 104.2 0 0 1 24 56a8 8 0 0 1 16 0a88.1 88.1 0 0 0 88 88h76.7l-34.4-34.3a8.1 8.1 0 0 1 11.4-11.4l48 48a8.1 8.1 0 0 1 0 11.4Z"></path></svg></div></a></div><div class="padding-bottom padding-xxlarge"><div class="w-layout-grid footer14_top-wrapper"><div class="footer14_link-column shadow-xlarge"><div class="margin-bottom margin-xxsmall"><div class="text-weight-semibold foot shadbut">WarpStream</div></div><div class="footer14_link-list"><a href="/pricing" class="footer14_link">Pricing</a><a href="/about" class="footer14_link">Company</a><a href="/blog" class="footer14_link">Blog</a><a href="/contact-us" class="footer14_link">Contact</a><a href="/customers" class="footer14_link">Customers</a><a href="/migration" class="footer14_link">Migration</a><a href="https://docs.warpstream.com/warpstream" target="_blank" class="footer14_link last">Docs</a></div></div><div class="footer14_link-column shadow-xlarge"><div class="margin-bottom margin-xxsmall"><div class="text-weight-semibold foot shadbut">Product</div></div><div class="footer14_link-list"><a href="/bring-your-own-cloud-kafka-data-streaming" class="link-block-62 w-inline-block"><div class="text-block-315">Bring Your Own Cloud</div><div class="icon-embed-xxsmall-282 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M160.1 40a88.1 88.1 0 0 0-78.8 48.7a86.6 86.6 0 0 0-9.3 39a8.2 8.2 0 0 1-7.4 8.3a8 8 0 0 1-8.6-8a105 105 0 0 1 5.3-32.9a4 4 0 0 0-4.7-5.2A64 64 0 0 0 8 152c0 35.2 29.8 64 64.9 64H160a88 88 0 0 0 .1-176Zm37.6 81.7l-48 48a8.2 8.2 0 0 1-11.4 0l-24-24a8.1 8.1 0 0 1 11.4-11.4l18.3 18.4l42.3-42.4a8.1 8.1 0 0 1 11.4 11.4Z"></path></svg></div></a><a href="/tableflow" class="link-block-62 w-inline-block"><div class="div-block-550"><div class="text-block-265">Tableflow</div><div class="text-block-267">GA!</div></div><div class="icon-embed-xxsmall-288 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M33.7 77A8 8 0 0 1 35 65.8a81.8 81.8 0 0 1 29.1-13.6c16.1-4 41.1-5 68.3 13.1c42.4 28.3 77.2 1.6 78.6.4a8.2 8.2 0 0 1 11.3 1.3a8 8 0 0 1-1.3 11.2a81.8 81.8 0 0 1-29.1 13.6a81 81 0 0 1-19.7 2.4c-14 0-30.8-3.7-48.6-15.5c-42.4-28.3-77.2-1.6-78.6-.4A8.2 8.2 0 0 1 33.7 77ZM211 121.7c-1.4 1.2-36.2 27.9-78.6-.4c-27.2-18.1-52.2-17.1-68.3-13.1A81.8 81.8 0 0 0 35 121.8a8 8 0 0 0-1.3 11.2a8.2 8.2 0 0 0 11.3 1.3c1.4-1.2 36.2-27.9 78.6.4c17.8 11.8 34.6 15.5 48.6 15.5a81 81 0 0 0 19.7-2.4a81.8 81.8 0 0 0 29.1-13.6a8 8 0 0 0 1.3-11.2a8.2 8.2 0 0 0-11.3-1.3Zm0 56c-1.4 1.2-36.2 27.9-78.6-.4c-27.2-18.1-52.2-17.1-68.3-13.1A81.8 81.8 0 0 0 35 177.8a8 8 0 0 0-1.3 11.2a8.2 8.2 0 0 0 11.3 1.3c1.4-1.2 36.2-27.9 78.6.4c17.8 11.8 34.6 15.5 48.6 15.5a82.6 82.6 0 0 0 48.8-16a8 8 0 0 0 1.3-11.2a8.2 8.2 0 0 0-11.3-1.3Z"></path></svg></div></a><a href="/managed-data-pipelines-kafka-compatible-stream-processing" class="link-block-62 w-inline-block"><div class="text-block-265">Managed Data Pipelines</div><div class="icon-embed-xxsmall-282 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="m245.7 85.7l-40 40a8.2 8.2 0 0 1-11.4 0a8.1 8.1 0 0 1 0-11.4L220.7 88H176a40 40 0 0 0-40 40a56 56 0 0 1-56 56h-.9a36 36 0 1 1 0-16h.9a40 40 0 0 0 40-40a56 56 0 0 1 56-56h44.7l-26.4-26.3a8.1 8.1 0 0 1 11.4-11.4l40 40a8.1 8.1 0 0 1 0 11.4Z"></path></svg></div></a><a href="/orbit-apache-kafka-migration-and-replication" class="link-block-62 w-inline-block"><div>Orbit</div><div class="icon-embed-xxsmall-282 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M223.3 116a117.3 117.3 0 0 1 .7 12a96 96 0 0 1-154 76.5c24.6-6.2 53.5-18.5 82-34.9s53.6-35.4 71.3-53.6Zm22.5-56c-5.5-9.5-20.3-18.4-59.8-8.5A96 96 0 0 0 32 128a117.3 117.3 0 0 0 .7 12c-28.3 29.2-27.9 46.5-22.5 56c3.7 6.4 11.9 12.8 29.8 12.8a121.7 121.7 0 0 0 25.5-3.2l4.5-1.1a105 105 0 0 1-14.2-13.3c-18.7 3.3-29.3 1-31.7-3.2c-1.5-2.6-.7-7.5 2.3-13.4A85.7 85.7 0 0 1 37.1 159a95.2 95.2 0 0 0 18.7 32.2l6.2-1.3c24-5.3 53.1-17.5 82-34.2s54-35.8 70.6-53.9a62 62 0 0 0 4.3-4.8a95.2 95.2 0 0 0-18.7-32.2a83.9 83.9 0 0 1 19-1.5c6.6.4 11.2 2.1 12.7 4.7c2.4 4.2-.9 14.5-13 29a107.3 107.3 0 0 1 4.4 19l3.1-3.3c25.3-27.5 24.5-43.8 19.4-52.7Z"></path></svg></div></a><a href="/data-governance-schema-registry-and-validation" class="link-block-62 w-inline-block"><div>Data Goverance</div><div class="icon-embed-xxsmall-282 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M128 24c-53.8 0-96 24.6-96 56v96c0 31.4 42.2 56 96 56s96-24.6 96-56V80c0-31.4-42.2-56-96-56Zm80 104c0 9.6-7.9 19.4-21.6 26.9c-15.5 8.5-36.2 13.1-58.4 13.1s-42.9-4.6-58.4-13.1C55.9 147.4 48 137.6 48 128v-16.6c17.1 14.9 46.2 24.6 80 24.6s62.9-9.7 80-24.6Zm-21.6 74.9c-15.5 8.5-36.2 13.1-58.4 13.1s-42.9-4.6-58.4-13.1C55.9 195.4 48 185.6 48 176v-16.6c17.1 14.9 46.2 24.6 80 24.6s62.9-9.7 80-24.6V176c0 9.6-7.9 19.4-21.6 26.9Z"></path></svg></div></a><a href="/multi-region-clusters" class="link-block-62 w-inline-block"><div class="text-block-265">Multi-Region Clusters</div><div class="icon-embed-xxsmall-282 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M156 92V80h-12a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h12v-12a16 16 0 0 1 16-16h40a16 16 0 0 1 16 16v40a16 16 0 0 1-16 16h-40a16 16 0 0 1-16-16v-12h-12a32.1 32.1 0 0 1-32-32v-24H84v8a16 16 0 0 1-16 16H36a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16v8h28V96a32.1 32.1 0 0 1 32-32h12V52a16 16 0 0 1 16-16h40a16 16 0 0 1 16 16v40a16 16 0 0 1-16 16h-40a16 16 0 0 1-16-16Z"></path></svg></div></a><a href="/integrations" class="link-block-62 last w-inline-block"><div>Integrations</div><div class="icon-embed-xxsmall-282 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M56 60a8 8 0 0 1 8-8h12V40a8 8 0 0 1 16 0v12h12a8 8 0 0 1 0 16H92v12a8 8 0 0 1-16 0V68H64a8 8 0 0 1-8-8Zm184 84h-16v-16a8 8 0 0 0-16 0v16h-16a8 8 0 0 0 0 16h16v16a8 8 0 0 0 16 0v-16h16a8 8 0 0 0 0-16Zm-58.3-26.3L75.3 224a15.9 15.9 0 0 1-22.6 0L32 203.3a15.9 15.9 0 0 1 0-22.6L180.7 32a16.1 16.1 0 0 1 22.6 0L224 52.7a15.9 15.9 0 0 1 0 22.6l-42.3 42.4Zm-5.7-17L212.7 64L192 43.3L155.3 80Zm8 91.3h-8v-8a8 8 0 0 0-16 0v8h-8a8 8 0 0 0 0 16h8v8a8 8 0 0 0 16 0v-8h8a8 8 0 0 0 0-16Z"></path></svg></div></a></div></div><div class="footer14_link-column shadow-xlarge"><div class="margin-bottom margin-xxsmall"><div class="text-weight-semibold foot shadbut">Community</div></div><div class="footer14_link-list"><a href="https://console.warpstream.com/socials/slack" class="link-block-62 w-inline-block"><div>Slack</div><div class="icon-embed-xxsmall-6 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--carbon" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path fill="currentColor" d="M9.042 19.166a2.521 2.521 0 1 1-2.52-2.521h2.52zm1.27 0a2.521 2.521 0 0 1 5.043 0v6.313a2.521 2.521 0 1 1-5.042 0zm2.522-10.124a2.521 2.521 0 1 1 2.521-2.52v2.52zm0 1.27a2.521 2.521 0 0 1 0 5.043H6.52a2.521 2.521 0 1 1 0-5.042zm10.124 2.522a2.521 2.521 0 1 1 2.52 2.521h-2.52zm-1.27 0a2.521 2.521 0 0 1-5.043 0V6.52a2.521 2.521 0 1 1 5.042 0zm-2.522 10.124a2.521 2.521 0 1 1-2.521 2.52v-2.52zm0-1.27a2.521 2.521 0 0 1 0-5.043h6.313a2.521 2.521 0 1 1 0 5.042z"></path></svg></div></a><a href="https://console.warpstream.com/socials/discord" class="link-block-62 w-inline-block"><div>Discord</div><div class="icon-embed-small-2 w-embed"><svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 32 32" fill="none" preserveAspectRatio="xMidYMid meet" aria-hidden="true" role="img">
<path d="M19.7599 5.67999C19.4951 6.15424 19.2591 6.64402 19.0532 7.14666C17.0302 6.82673 14.9695 6.82673 12.9466 7.14666C12.7407 6.64402 12.5047 6.15424 12.2399 5.67999C10.3343 6.00559 8.48176 6.58871 6.73322 7.41333C3.60648 11.9257 2.18847 17.4039 2.73322 22.8667C4.77087 24.3985 7.05783 25.5668 9.49322 26.32C10.0478 25.5875 10.5427 24.8116 10.9732 24C10.1787 23.707 9.41495 23.3363 8.69322 22.8933C8.89117 22.7616 9.07842 22.6145 9.25322 22.4533C11.3578 23.4671 13.6638 23.9935 15.9999 23.9935C18.3359 23.9935 20.6419 23.4671 22.7466 22.4533C22.9332 22.6133 23.1199 22.76 23.3066 22.8933C22.5809 23.3329 21.818 23.7076 21.0266 24.0133C21.4392 24.8434 21.9209 25.6373 22.4666 26.3867C24.8989 25.636 27.1819 24.4674 29.2132 22.9333C29.7711 17.4696 28.3519 11.9869 25.2132 7.47999C23.4843 6.63831 21.6501 6.03289 19.7599 5.67999ZM11.5732 19.7467C10.906 19.6988 10.2833 19.3942 9.83578 18.897C9.38829 18.3998 9.15082 17.7486 9.17322 17.08C9.14744 16.4105 9.38374 15.7574 9.83191 15.2595C10.2801 14.7615 10.9048 14.458 11.5732 14.4133C12.2417 14.458 12.8664 14.7615 13.3145 15.2595C13.7627 15.7574 13.999 16.4105 13.9732 17.08C13.999 17.7494 13.7627 18.4025 13.3145 18.9005C12.8664 19.3985 12.2417 19.702 11.5732 19.7467ZM20.4266 19.7467C19.7593 19.6988 19.1366 19.3942 18.6891 18.897C18.2416 18.3998 18.0042 17.7486 18.0266 17.08C18.0008 16.4105 18.2371 15.7574 18.6852 15.2595C19.1334 14.7615 19.7581 14.458 20.4266 14.4133C21.0963 14.4546 21.723 14.7572 22.1718 15.2559C22.6207 15.7546 22.8558 16.4097 22.8266 17.08C22.8558 17.7503 22.6207 18.4053 22.1718 18.9041C21.723 19.4028 21.0963 19.7054 20.4266 19.7467Z" fill="currentColor"/>
</svg></div></a><a href="https://www.linkedin.com/company/warpstream/" class="link-block-62 w-inline-block"><div>LinkedIn</div><div class="icon-embed-xsmall-35 footersmall w-embed"><svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.5 3C3.67157 3 3 3.67157 3 4.5V19.5C3 20.3284 3.67157 21 4.5 21H19.5C20.3284 21 21 20.3284 21 19.5V4.5C21 3.67157 20.3284 3 19.5 3H4.5ZM8.52076 7.00272C8.52639 7.95897 7.81061 8.54819 6.96123 8.54397C6.16107 8.53975 5.46357 7.90272 5.46779 7.00413C5.47201 6.15897 6.13998 5.47975 7.00764 5.49944C7.88795 5.51913 8.52639 6.1646 8.52076 7.00272ZM12.2797 9.76176H9.75971H9.7583V18.3216H12.4217V18.1219C12.4217 17.742 12.4214 17.362 12.4211 16.9819V16.9818V16.9816V16.9815V16.9812C12.4203 15.9674 12.4194 14.9532 12.4246 13.9397C12.426 13.6936 12.4372 13.4377 12.5005 13.2028C12.7381 12.3253 13.5271 11.7586 14.4074 11.8979C14.9727 11.9864 15.3467 12.3141 15.5042 12.8471C15.6013 13.1803 15.6449 13.5389 15.6491 13.8863C15.6605 14.9339 15.6589 15.9815 15.6573 17.0292V17.0294C15.6567 17.3992 15.6561 17.769 15.6561 18.1388V18.3202H18.328V18.1149C18.328 17.6629 18.3278 17.211 18.3275 16.7591V16.759V16.7588C18.327 15.6293 18.3264 14.5001 18.3294 13.3702C18.3308 12.8597 18.276 12.3563 18.1508 11.8627C17.9638 11.1286 17.5771 10.5211 16.9485 10.0824C16.5027 9.77019 16.0133 9.5691 15.4663 9.5466C15.404 9.54401 15.3412 9.54062 15.2781 9.53721L15.2781 9.53721L15.2781 9.53721C14.9984 9.52209 14.7141 9.50673 14.4467 9.56066C13.6817 9.71394 13.0096 10.0641 12.5019 10.6814C12.4429 10.7522 12.3852 10.8241 12.2991 10.9314L12.2991 10.9315L12.2797 10.9557V9.76176ZM5.68164 18.3244H8.33242V9.76733H5.68164V18.3244Z" fill="CurrentColor"/>
</svg></div></a><a href="https://twitter.com/warpstream_labs" class="link-block-62 w-inline-block"><div>X (Twitter)</div><div class="icon-embed-xsmall-35 footersmall w-embed"><svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M17.1761 4H19.9362L13.9061 10.7774L21 20H15.4456L11.0951 14.4066L6.11723 20H3.35544L9.80517 12.7508L3 4H8.69545L12.6279 9.11262L17.1761 4ZM16.2073 18.3754H17.7368L7.86441 5.53928H6.2232L16.2073 18.3754Z" fill="CurrentColor"/>
</svg></div></a><a href="https://bsky.app/profile/warpstream.com" class="link-block-62 w-inline-block"><div>BlueSky</div><div class="icon-embed-xsmall-35 footersmall w-embed"><svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M6.33526 4.21162C8.62822 5.97119 11.0945 9.53886 12.0001 11.4535C12.9056 9.53901 15.3718 5.97116 17.6649 4.21162C19.3193 2.94199 22 1.95962 22 5.08557C22 5.70987 21.6498 10.33 21.4444 11.08C20.7306 13.6878 18.1292 14.3529 15.8152 13.9503C19.86 14.654 20.8889 16.9848 18.6668 19.3156C14.4465 23.7423 12.601 18.205 12.1278 16.7861C12.0412 16.526 12.0006 16.4043 12 16.5078C11.9994 16.4043 11.9588 16.526 11.8721 16.7861C11.3993 18.205 9.55378 23.7424 5.33322 19.3156C3.11103 16.9848 4.13995 14.6538 8.18483 13.9503C5.87077 14.3529 3.26934 13.6878 2.55555 11.08C2.35016 10.3299 2 5.7098 2 5.08557C2 1.95962 4.68074 2.94199 6.33515 4.21162H6.33526Z" fill="currentcolor"/>
</svg></div></a><a href="https://www.youtube.com/@WarpStreamLabs" class="link-block-62 w-inline-block"><div>YouTube</div><div class="icon-embed-xsmall-35 footersmall w-embed"><svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M20.5686 4.77345C21.5163 5.02692 22.2555 5.76903 22.5118 6.71673C23.1821 9.42042 23.1385 14.5321 22.5259 17.278C22.2724 18.2257 21.5303 18.965 20.5826 19.2213C17.9071 19.8831 5.92356 19.8015 3.40294 19.2213C2.45524 18.9678 1.71595 18.2257 1.45966 17.278C0.827391 14.7011 0.871044 9.25144 1.44558 6.73081C1.69905 5.78311 2.44116 5.04382 3.38886 4.78753C6.96561 4.0412 19.2956 4.282 20.5686 4.77345ZM9.86682 8.70227L15.6122 11.9974L9.86682 15.2925V8.70227Z" fill="CurrentColor"/>
</svg></div></a><a href="https://facebook.com/warpstream" class="link-block-62 last w-inline-block"><div>Facebook</div><div class="icon-embed-xsmall-35 footersmall w-embed"><svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M22 12.0611C22 6.50451 17.5229 2 12 2C6.47715 2 2 6.50451 2 12.0611C2 17.0828 5.65684 21.2452 10.4375 22V14.9694H7.89844V12.0611H10.4375V9.84452C10.4375 7.32296 11.9305 5.93012 14.2146 5.93012C15.3088 5.93012 16.4531 6.12663 16.4531 6.12663V8.60261H15.1922C13.95 8.60261 13.5625 9.37822 13.5625 10.1739V12.0611H16.3359L15.8926 14.9694H13.5625V22C18.3432 21.2452 22 17.083 22 12.0611Z" fill="CurrentColor"/>
</svg></div></a></div></div><div class="footer14_link-column shadow-xlarge"><div class="margin-bottom margin-xxsmall"><div class="text-weight-semibold foot shadbut">Other</div></div><div class="footer14_link-list"><a href="/changelog" class="footer14_link">Changelog</a><a href="/executive-summary" class="footer14_link">Executive Summary</a><a href="https://www.warpstream.com/contact-us#subscribe" class="footer14_link">Mailing List</a><a href="https://aws.amazon.com/marketplace/pp/prodview-aciq4fyplkpgy" target="_blank" class="footer14_link">AWS Marketplace</a><a href="https://console.cloud.google.com/marketplace/product/warpstream-public/warpstream" target="_blank" class="footer14_link">GCP Marketplace</a><a href="https://support.confluent.io/hc/en-us" target="_blank" class="footer14_link">Support</a><a href="https://status.warpstream.com/" target="_blank" class="footer14_link last">Status</a></div></div></div></div><div class="padding-bottom padding-medium"><div class="footer14_middle-wrapper"><a href="/" class="footer14_logo-link w-nav-brand"><img loading="lazy" src="https://cdn.prod.website-files.com/683882630fceea3de6f5776a/6a96ec03341fccd5fb18e6b4_Group%207.svg" alt="WarpStream Logo" class="footer14_logo"/></a><div class="footer14_image-list"><div class="footer14_image-item"><a href="https://www.ibm.com/products/confluent" target="_blank" class="w-inline-block"><img loading="lazy" src="https://cdn.prod.website-files.com/683882630fceea3de6f5776a/69dd07df6f5799507e16e0f5_Frame%20(1).svg" alt="Confluent logo" class="footer14_image ibm"/></a><a href="https://security.warpstream.com/" target="_blank" class="w-inline-block"><img loading="lazy" src="https://cdn.prod.website-files.com/683882630fceea3de6f5776a/6842472884a1134b0e3dde13_66db21cd8a3638d2481ec998_soc2%201.svg" alt="SOC 2 Certification" class="footer14_image"/></a></div></div></div></div><div class="divider-horizontal"></div><div class="padding-top padding-medium"><div class="footer14_bottom-wrapper"><div class="div-block-46"><div class="div-block-341"><div id="w-node-_18ddefd5-4a2f-4541-68f1-a0c826fea61e-26fea5b4" class="footer14_credit-text">© 2026 WarpStream. All rights reserved.</div><img src="https://cdn.prod.website-files.com/683882630fceea3de6f5776a/6849f0c28731b34944edf23c_Group.svg" loading="lazy" alt="WarpStream icon" class="image-59"/></div><a id="w-node-_18ddefd5-4a2f-4541-68f1-a0c826fea620-26fea5b4" href="https://status.warpstream.com/" target="_blank" class="link-3">Status</a><a id="w-node-_18ddefd5-4a2f-4541-68f1-a0c826fea622-26fea5b4" href="/privacy-policy" class="link-3">Privacy Policy</a><a href="https://assets.confluent.io/m/7cc915b8d26e73a7/original/Confluent-Cloud-Unified-SLA-July-2025-Legal.pdf?_gl=1*1typb35*_gcl_aw*R0NMLjE3NTgwMzI3ODAuQ2p3S0NBandsYVRHQmhBTkVpd0FvUmdYQlFOTXlOTUZyWlBuZWNpdDk1MXFJWjByRllaMjk2NGlSUjJxc1MwYXNTSW5mLWY1ai1jcFlob0NubjRRQXZEX0J3RQ..*_gcl_au*MTQ0NDQ1OTM5Ny4xNzUyNDk2MzU4*_ga*MTE4ODgwNjk5NC4xNzUyNDk2MzU4*_ga_D2D3EGKSGD*czE3NTgxMTM1MDEkbzE2MiRnMCR0MTc1ODExMzUwMSRqNjAkbDAkaDA.&amp;_ga=2.251478662.1086911196.1757938834-1188806994.1752496358&amp;_gac=1.19661386.1758032780.CjwKCAjwlaTGBhANEiwAoRgXBQNMyNMFrZPnecit951qIZ0rFYZ2964iRR2qsS0asSInf-f5j-cpYhoCnn4QAvD_BwE" target="_blank" class="link-3">SLA</a><a href="https://assets.confluent.io/m/6e14449e149899d3/original/20250602-Confluent-Cloud-Support-Services-Policy.pdf?_gl=1*fe9xly*_gcl_aw*R0NMLjE3NTgwMzI3ODAuQ2p3S0NBandsYVRHQmhBTkVpd0FvUmdYQlFOTXlOTUZyWlBuZWNpdDk1MXFJWjByRllaMjk2NGlSUjJxc1MwYXNTSW5mLWY1ai1jcFlob0NubjRRQXZEX0J3RQ..*_gcl_au*MTQ0NDQ1OTM5Ny4xNzUyNDk2MzU4*_ga*MTE4ODgwNjk5NC4xNzUyNDk2MzU4*_ga_D2D3EGKSGD*czE3NTgxMTM1MDEkbzE2MiRnMCR0MTc1ODExMzUwMSRqNjAkbDAkaDA.&amp;_ga=2.238840064.1086911196.1757938834-1188806994.1752496358&amp;_gac=1.51439195.1758032780.CjwKCAjwlaTGBhANEiwAoRgXBQNMyNMFrZPnecit951qIZ0rFYZ2964iRR2qsS0asSInf-f5j-cpYhoCnn4QAvD_BwE" id="w-node-_18ddefd5-4a2f-4541-68f1-a0c826fea626-26fea5b4" target="_blank" class="link-3">Support Policy</a><a href="https://www.confluent.io/contracts/" target="_blank" class="link-3">Terms of Service</a><a id="trust_center" href="https://confluent.safebase.us/?product=bring-your-own-cloud-warpstream" class="trust-center link-3">Trust Center</a><a href="https://support.confluent.io/hc/en-us" target="_blank" class="link-3">Support</a><a href="https://www.confluent.io/trust-and-security/" target="_blank" class="link-3">Security</a><a href="/ai-info" class="link-3">AI Info</a><div class="w-embed"><style>
button.ot-sdk-show-settings.link-3 { appearance: none; -webkit-appearance: none; display: inline; background: transparent; border: 0; padding: 0; font-family: inherit; line-height: inherit; cursor: pointer; }
@media screen and (max-width: 991px) { button.ot-sdk-show-settings.link-3 { padding-left: 10px; } }
@media screen and (max-width: 479px) { button.ot-sdk-show-settings.link-3 { padding: 0 0 0.5rem; } }
</style>
<button type="button" class="ot-sdk-show-settings link-3">Cookie settings</button></div></div><div class="div-block-322"><div class="text-block-96">Apache, Apache Kafka, Kafka, and associated open source project namesare trademarks of the Apache Software Foundation.</div></div></div></div></div></div></div><div class="code-embed-27 w-embed w-script"><script>
window.addEventListener("load", function () {
const navbar = document.querySelector('.navbar5_component');
const darkSections = document.querySelectorAll('.darksection');
if (!navbar || darkSections.length === 0) {
console.warn("Missing navbar or dark sections.");
return;
}
const checkOverlap = () => {
const navbarTop = 0; // top of the viewport (fixed nav)
let isInDark = false;
darkSections.forEach(section => {
const rect = section.getBoundingClientRect();
if (rect.top <= navbarTop && rect.bottom >= navbarTop) {
isInDark = true;
}
});
navbar.classList.toggle('on-dark', isInDark);
};
// Check on scroll and resize
window.addEventListener('scroll', checkOverlap);
window.addEventListener('resize', checkOverlap);
// Initial run
checkOverlap();
});
</script></div><div class="code-embed-28 w-embed w-script"><!-- Elfsight AI Chatbot | WarpStream Chatbot -->
<script src="https://static.elfsight.com/platform/platform.js" async></script>
<div class="elfsight-app-d30a88e8-a1a4-4f20-b160-f6b7548a842e" data-elfsight-app-lazy></div></div></footer><div class="html-embed-5 w-embed w-script"><script>
window.onload = function() {
document.getElementById('perma').onclick = function(e) {
e.preventDefault(); // This prevents the default action of the click event
// Copy to clipboard
var dummy = document.createElement('input'),
text = window.location.href;
document.body.appendChild(dummy);
dummy.value = text;
dummy.select();
document.execCommand('copy');
document.body.removeChild(dummy);
}
}
</script></div><script src="https://d3e54v103j8qbb.cloudfront.net/js/jquery-3.5.1.min.dc5e7f18c8.js?site=683882630fceea3de6f5776a" type="text/javascript" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script><script src="https://cdn.prod.website-files.com/683882630fceea3de6f5776a/js/warbd8f8uhb.b62db53d.0521e4f9229f0d4d.js" type="text/javascript" integrity="sha384-Jz0H49wXEfcaqyiVS1XX/I6RMDzlBEOKakg4x3c/3bMp/iK9vfxE8/tQEoSweOMl" crossorigin="anonymous"></script><!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-MF9MRLCR"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) --></body></html>