<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/action-merging-ybdiqnsok" -->

---
title: Action Merging | daily.dev
description: BuildBuddy&#x27;s remote execution engine implements action merging to deduplicate identical in-flight Bazel action executions. When multiple developers trigger the...
canonical: https://daily.dev/posts/action-merging-ybdiqnsok
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Action Merging | daily.dev
og:description: BuildBuddy&#x27;s remote execution engine implements action merging to deduplicate identical in-flight Bazel action executions. When multiple developers trigger the...
og:url: https://daily.dev/posts/action-merging-ybdiqnsok
og:image: https://api.daily.dev/og/posts/ybDiqnsOK.png
og:image:alt: Action Merging
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Action Merging

**[BuildBuddy Blog](https://daily.dev/sources/buildbuddy)** · 7 min read · 0 upvotes · 0 comments

## Summary

BuildBuddy's remote execution engine implements action merging to deduplicate identical in-flight Bazel action executions. When multiple developers trigger the same action (e.g., a slow test), merged executions wait on a single primary execution rather than running redundantly. The system stores action merging state in Redis with short TTLs, uses reference counting to handle cancelled invocations, and employs hedging to unblock stuck executions. At peak, the system merges over 1,000 actions per second, saving some long-running tests nearly 3 hours. A notable production bug caused action merging effectiveness to degrade as the Redis deployment scaled, because the client was reading/writing from a single shard instead of the full cluster. Future improvements include smarter handling of flaky tests, better use of hedged execution results, and improved UI visibility.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.buildbuddy.io/blog/action-merging>

## Similar posts on daily.dev

- [Speeding up interactive rebase in JetBrains IDEs](https://daily.dev/posts/speeding-up-interactive-rebase-in-jetbrains-ides-7pxrdbzbs) · JetBrains · 16 upvotes · 0 comments

---

Tags: [#distributed-systems](https://daily.dev/tags/distributed-systems), [#redis](https://daily.dev/tags/redis), [#bazel](https://daily.dev/tags/bazel), [#build-systems](https://daily.dev/tags/build-systems)

[View this post on daily.dev](https://daily.dev/posts/action-merging-ybdiqnsok)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Action Merging","url":"https://daily.dev/posts/action-merging-ybdiqnsok","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/action-merging-ybdiqnsok"},"datePublished":"2026-07-26T07:49:18.636Z","dateModified":"2026-07-26T07:51:22.222Z","description":"BuildBuddy's remote execution engine implements action merging to deduplicate identical in-flight Bazel action executions. When multiple developers trigger the...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/33977828beb075bbc730aea7605c5cb1?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/33977828beb075bbc730aea7605c5cb1?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"BuildBuddy Blog","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"BuildBuddy Blog","logo":"https://media.daily.dev/image/upload/s---X2Wa4pv--/c_limit,w_256/f_auto,q_auto/v1785052099/logos/buildbuddy?_a=BAMAMicg0","url":"https://daily.dev/sources/buildbuddy"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/action-merging-ybdiqnsok","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"distributed-systems,redis,bazel,build-systems","timeRequired":"PT7M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"BuildBuddy Blog","item":"https://daily.dev/sources/buildbuddy"},{"@type":"ListItem","position":3,"name":"Action Merging"}]}
```

