# locking

Published articles for locking.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## How Solaris' Turnstile Influenced the Modern System Designs of Web Browsers and Language Runtimes

DevFeed: [How Solaris' Turnstile Influenced the Modern System Designs of Web Browsers and Language Runtimes](<https://devfeed.tech/articles/how-solaris-turnstile-influenced-the-modern-system-designs-of-web-browsers-and-language-runtimes-26602.md>)

Original publisher: [Read original article](<https://www.infoq.com/news/2026/09/turnstile-system-design/>)

Author: Olimpiu Pop

Published: 2026-09-15T06:06:00Z

Content type: article

Language: en

Sources: [InfoQ](<https://devfeed.tech/sources/infoq.md>)

Topics: [systems](<https://devfeed.tech/topics/systems.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Kernel](<https://devfeed.tech/topics/kernel.md>), [observability](<https://devfeed.tech/topics/observability.md>), [browsers](<https://devfeed.tech/topics/browsers.md>), [web browsers](<https://devfeed.tech/topics/web-browsers.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [architecture-design](<https://devfeed.tech/tags/architecture-design.md>), [architectures](<https://devfeed.tech/tags/architectures.md>), [blocking](<https://devfeed.tech/tags/blocking.md>), [concurrency](<https://devfeed.tech/tags/concurrency.md>), [development](<https://devfeed.tech/tags/development.md>), [efficiency](<https://devfeed.tech/tags/efficiency.md>), [kernel](<https://devfeed.tech/tags/kernel.md>), [locking](<https://devfeed.tech/tags/locking.md>), [memory](<https://devfeed.tech/tags/memory.md>), [news](<https://devfeed.tech/tags/news.md>), [observability](<https://devfeed.tech/tags/observability.md>), [operating-systems](<https://devfeed.tech/tags/operating-systems.md>), [solaris](<https://devfeed.tech/tags/solaris.md>), [storage](<https://devfeed.tech/tags/storage.md>), [systems](<https://devfeed.tech/tags/systems.md>), [turnstile-system-design](<https://devfeed.tech/tags/turnstile-system-design.md>)

### AI overview

The article examines how Solaris innovations influenced modern systems engineering. It discusses the Slab Allocator, OpenZFS, DTrace, Zones, and turnstiles, focusing on how turnstiles reduce per-lock memory overhead while supporting priority inheritance for contended locks.

### Source excerpt

Sun's Solaris influenced modern systems engineering, with key innovations like the Slab Allocator for efficient memory management, OpenZFS for advanced storage, and DTrace for observability. Its turnstile mechanism addressed issues with mutexes, promoting lean locking designs that are reflected in contemporary programming languages and web browsers, enhancing performance and memory efficiency. By Olimpiu Pop

## ADD COLUMN is not always free, and the lock queue is what takes you down

DevFeed: [ADD COLUMN is not always free, and the lock queue is what takes you down](<https://devfeed.tech/articles/add-column-is-not-always-free-and-the-lock-queue-is-what-takes-you-down-39595.md>)

Original publisher: [Read original article](<https://ankit-rana.com/logs/43-add-column-is-not-always-free/>)

Author: hello@ankit-rana.com

Published: 2026-08-26T00:00:00Z

Content type: article

Language: en

Sources: [Ankit Rana | Mechanical Sympathy](<https://devfeed.tech/sources/ankit-rana-mechanical-sympathy.md>)

Topics: [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [incident](<https://devfeed.tech/topics/incident.md>), [Query (disambiguation)](<https://devfeed.tech/topics/query.md>), [migration](<https://devfeed.tech/topics/migration.md>), [MySQL](<https://devfeed.tech/topics/mysql.md>)

Tags: [ddl](<https://devfeed.tech/tags/ddl.md>), [incident](<https://devfeed.tech/tags/incident.md>), [locking](<https://devfeed.tech/tags/locking.md>), [migration](<https://devfeed.tech/tags/migration.md>), [migrations](<https://devfeed.tech/tags/migrations.md>), [mysql](<https://devfeed.tech/tags/mysql.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [query](<https://devfeed.tech/tags/query.md>), [queues](<https://devfeed.tech/tags/queues.md>), [schema-design](<https://devfeed.tech/tags/schema-design.md>), [timeout](<https://devfeed.tech/tags/timeout.md>)

### AI overview

Adding a nullable column can cause an outage even when the schema change itself is nearly instantaneous. In PostgreSQL, ALTER TABLE may wait for a long-running query, and subsequent queries can queue behind the waiting lock request. Setting a short lock_timeout and retrying can prevent the migration from taking down the table.

### Source excerpt

Modern PostgreSQL adds a column with a default as a metadata change, so the table is never rewritten and the migration itself is instant. The outage comes from lock acquisition instead: ALTER TABLE needs an ACCESS EXCLUSIVE lock, and while it waits behind one long-running query, every subsequent query queues behind the waiting ALTER because the lock queue is ordered. Setting lock_timeout to a couple of seconds and retrying converts that from an outage into a no-op.

## Decoding isolation levels: I built a toy DB to force dirty reads and phantom reads

DevFeed: [Decoding isolation levels: I built a toy DB to force dirty reads and phantom reads](<https://devfeed.tech/articles/decoding-isolation-levels-i-built-a-toy-db-to-force-dirty-reads-and-phantom-reads-39587.md>)

Original publisher: [Read original article](<https://ankit-rana.com/logs/35-isolation-levels-toy-db-dirty-phantom-reads/>)

Author: hello@ankit-rana.com

Published: 2026-08-02T00:00:00Z

Content type: tutorial

Language: en

Sources: [Ankit Rana | Mechanical Sympathy](<https://devfeed.tech/sources/ankit-rana-mechanical-sympathy.md>)

Topics: [Databases](<https://devfeed.tech/topics/databases.md>), [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [Python](<https://devfeed.tech/topics/python.md>), [MySQL](<https://devfeed.tech/topics/mysql.md>), [SQL](<https://devfeed.tech/topics/sql.md>), [locking](<https://devfeed.tech/topics/locking.md>)

Tags: [concurrency](<https://devfeed.tech/tags/concurrency.md>), [databases](<https://devfeed.tech/tags/databases.md>), [isolation-levels](<https://devfeed.tech/tags/isolation-levels.md>), [locking](<https://devfeed.tech/tags/locking.md>), [mvcc](<https://devfeed.tech/tags/mvcc.md>), [mysql](<https://devfeed.tech/tags/mysql.md>), [postgres](<https://devfeed.tech/tags/postgres.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [python](<https://devfeed.tech/tags/python.md>), [sql](<https://devfeed.tech/tags/sql.md>), [transactions](<https://devfeed.tech/tags/transactions.md>)

### AI overview

A hands-on tutorial uses a roughly 200-line Python toy database to reproduce transaction anomalies and explain why isolation levels behave differently across PostgreSQL and MySQL InnoDB. It shows that the ANSI SQL isolation table does not fully describe engine behavior, including PostgreSQL's handling of READ UNCOMMITTED and REPEATABLE READ, and MySQL InnoDB's snapshot and next-key locking behavior.

### Source excerpt

The ANSI isolation table lists which anomalies each level permits, but it does not describe what your engine actually does: Postgres silently upgrades READ UNCOMMITTED to READ COMMITTED, and its REPEATABLE READ prevents phantoms that the standard allows. Phantom reads are a locking problem rather than a row problem, because you cannot lock a row that does not exist yet. Snapshot isolation stops every anomaly the table names and still permits write skew, which the table never mentions.

## Coordinate access to shared resources with a distributed lock built on Temporal Workflows

DevFeed: [Coordinate access to shared resources with a distributed lock built on Temporal Workflows](<https://devfeed.tech/articles/coordinate-access-to-shared-resources-with-a-distributed-lock-built-on-temporal-workflows-35762.md>)

Original publisher: [Read original article](<https://temporal.io/blog/coordinate-access-to-shared-resources-with-a-distributed-lock-built-on-temporal-workflows>)

Author: Keith Tenzer

Published: 2026-06-11T00:00:00Z

Content type: tutorial

Language: en

Sources: [Temporal Blog](<https://devfeed.tech/sources/temporal-blog.md>)

Topics: [locking](<https://devfeed.tech/topics/locking.md>)

Tags: [distributed](<https://devfeed.tech/tags/distributed.md>), [lease](<https://devfeed.tech/tags/lease.md>), [locking](<https://devfeed.tech/tags/locking.md>), [locks](<https://devfeed.tech/tags/locks.md>), [recovery](<https://devfeed.tech/tags/recovery.md>), [resource](<https://devfeed.tech/tags/resource.md>), [temporal-concepts](<https://devfeed.tech/tags/temporal-concepts.md>), [workflows](<https://devfeed.tech/tags/workflows.md>)

### AI overview

This guide describes a reusable, durable distributed lock for Temporal Workflows. It models each permit as a short-lived child Workflow, uses Workflow IDs for atomic acquisition, and uses Signals and lease timeouts to release locks and recover orphaned permits.

### Source excerpt

This guide details a reusable, durable distributed lock for Temporal Workflows that doesn't rely on an external database, central limiter, or any shared state.

## Track customer loyalty points with durable workflows

DevFeed: [Track customer loyalty points with durable workflows](<https://devfeed.tech/articles/track-customer-loyalty-points-with-durable-workflows-35824.md>)

Original publisher: [Read original article](<https://temporal.io/blog/entity-workflow-loyalty-points>)

Author: Cecil Phillip

Published: 2026-06-03T00:00:00Z

Content type: tutorial

Language: en

Sources: [Temporal Blog](<https://devfeed.tech/sources/temporal-blog.md>)

Topics: [account](<https://devfeed.tech/topics/account.md>), [business logic](<https://devfeed.tech/topics/business-logic.md>), [Database](<https://devfeed.tech/topics/database.md>), [real-time](<https://devfeed.tech/topics/real-time.md>), [locking](<https://devfeed.tech/topics/locking.md>), [retry](<https://devfeed.tech/topics/retry.md>), [service](<https://devfeed.tech/topics/service.md>), [upgrade](<https://devfeed.tech/topics/upgrade.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>)

Tags: [account](<https://devfeed.tech/tags/account.md>), [business-logic](<https://devfeed.tech/tags/business-logic.md>), [customer](<https://devfeed.tech/tags/customer.md>), [database](<https://devfeed.tech/tags/database.md>), [locking](<https://devfeed.tech/tags/locking.md>), [loyalty](<https://devfeed.tech/tags/loyalty.md>), [loyalty-points](<https://devfeed.tech/tags/loyalty-points.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [process](<https://devfeed.tech/tags/process.md>), [query](<https://devfeed.tech/tags/query.md>), [real-time](<https://devfeed.tech/tags/real-time.md>), [retry](<https://devfeed.tech/tags/retry.md>), [service](<https://devfeed.tech/tags/service.md>), [temporal](<https://devfeed.tech/tags/temporal.md>), [temporal-concepts](<https://devfeed.tech/tags/temporal-concepts.md>), [upgrades](<https://devfeed.tech/tags/upgrades.md>), [workflows](<https://devfeed.tech/tags/workflows.md>)

### AI overview

This article explains how to track customer loyalty points with durable Entity Workflows in Temporal. Each customer has a persistent workflow that maintains points, tier status, and activity history, while Signals handle accruals, Updates validate redemptions, and Queries read current balances.

### Source excerpt

Track loyalty points with durable Entity Workflows in Temporal. See how to handle accruals, tier upgrades, and redemptions for each customer.

## Database Locking Mechanisms

DevFeed: [Database Locking Mechanisms](<https://devfeed.tech/articles/database-locking-mechanisms-34675.md>)

Original publisher: [Read original article](<https://newsletter.systemdesigncodex.com/p/database-locking-mechanisms>)

Author: Saurabh Dashora

Published: 2026-05-19T06:27:39Z

Content type: tutorial

Language: en

Sources: [System Design Codex](<https://devfeed.tech/sources/system-design-codex.md>)

Topics: [Databases](<https://devfeed.tech/topics/databases.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [Deadlock](<https://devfeed.tech/topics/deadlock.md>), [Transactions](<https://devfeed.tech/topics/transactions.md>), [SQL](<https://devfeed.tech/topics/sql.md>), [Object-relational mapping](<https://devfeed.tech/topics/orm.md>)

Tags: [concurrency](<https://devfeed.tech/tags/concurrency.md>), [consistency](<https://devfeed.tech/tags/consistency.md>), [database](<https://devfeed.tech/tags/database.md>), [hibernate](<https://devfeed.tech/tags/hibernate.md>), [locking](<https://devfeed.tech/tags/locking.md>), [locks](<https://devfeed.tech/tags/locks.md>), [optimistic-locking](<https://devfeed.tech/tags/optimistic-locking.md>), [sql](<https://devfeed.tech/tags/sql.md>), [transactions](<https://devfeed.tech/tags/transactions.md>)

### AI overview

This tutorial compares pessimistic and optimistic locking for maintaining data consistency in multi-user applications. Pessimistic locking acquires locks before updates, while optimistic locking detects conflicts at commit time using version numbers or timestamps. The article explains their trade-offs in concurrency, performance, deadlocks, and consistency, and outlines suitable use cases.

### Source excerpt

Pessimistic vs Optimistic

## Safe Optimistic Lock Coupling

DevFeed: [Safe Optimistic Lock Coupling](<https://devfeed.tech/articles/safe-optimistic-lock-coupling-25091.md>)

Original publisher: [Read original article](<https://databasearchitects.blogspot.com/2026/04/safe-optimistic-lock-coupling.html>)

Author: Thomas Neumann (noreply@blogger.com)

Published: 2026-04-29T10:22:56Z

Content type: article

Language: en

Sources: [Database Architects](<https://devfeed.tech/sources/database-architects.md>)

Topics: [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [Concurrent Programming](<https://devfeed.tech/topics/concurrent-programming.md>), [Data structures](<https://devfeed.tech/topics/data-structures.md>), [Scalability](<https://devfeed.tech/topics/scalability.md>), [race-condition](<https://devfeed.tech/topics/race-condition.md>)

Tags: [concurrent](<https://devfeed.tech/tags/concurrent.md>), [cpu](<https://devfeed.tech/tags/cpu.md>), [data-structures](<https://devfeed.tech/tags/data-structures.md>), [locking](<https://devfeed.tech/tags/locking.md>), [locks](<https://devfeed.tech/tags/locks.md>), [mutex](<https://devfeed.tech/tags/mutex.md>), [performance](<https://devfeed.tech/tags/performance.md>), [race-condition](<https://devfeed.tech/tags/race-condition.md>), [scalability](<https://devfeed.tech/tags/scalability.md>), [synchronization](<https://devfeed.tech/tags/synchronization.md>), [thread](<https://devfeed.tech/tags/thread.md>), [typesafety](<https://devfeed.tech/tags/typesafety.md>)

### AI overview

The article explains how lock coupling can limit the scalability of concurrent binary-tree lookups because readers contend on locks, especially at the root. It presents Optimistic Lock Coupling, in which readers validate version numbers without writes, and discusses the race-condition risk when values are used before validation.

### Source excerpt

As the number of CPU cores keeps growing, the scalability of concurrent data structures becomes increasingly important. A data structure that works fine on 4 cores can become a bottleneck on 32, not because of algorithmic limitations, but because of how it synchronizes access. We illustrate that with a simple binary tree. Usually these data structures are protected by some kind of lock: struct Node { mutex lock; key_type key; value_type value; Node* left, *right; }; struct Tree { mutex lock; Node* root; }; When searching a value, we can traverse the data structure, lock the parts of the data we are currently touching, and release locks when we are done ("lock coupling"): option<value_type> Tree::lookup(key_type key) { lock.lock_shared(); mutex* currentLock = &lock; Node* iter = root; option<value_type> result; while (iter) { if (key == iter->key) { result = iter->value; break; } Node* next = (key < iter->key) ? iter->left : iter->right; if (next) next->lock.lock_shared(); currentLock->unlock(); currentLock = next ? &next->lock : nullptr; iter = next; } currentLock->unlock(); return result; } While conceptually simple, lock coupling has quite poor performance in practice. The problem is that it creates contention on the locks, in particular for the root node. Every lookup goes through the root node, thus the root node is constantly locked and unlocked. While there is no semantic contention between lookups, as all readers can read the root concurrently, there is physical contention on the lock itself, which limits scalability. This can be seen below, with concurrent lookups in a tree of 100,000 elements, executed on a 16-core / 32-thread 9950X3D. Lookup scalability: no locking vs lock coupling This contention problem can be solved by using Optimistic Lock Coupling, a synchronization technique where readers do not perform any writes. The key idea here is that writers lock as usual, and increase a version number when they are done updating. Readers read the version numb

## How we standardized MariaDB in our Integration Server

DevFeed: [How we standardized MariaDB in our Integration Server](<https://devfeed.tech/articles/how-we-standardized-mariadb-in-our-integration-server-20462.md>)

Original publisher: [Read original article](<https://eng.wealthfront.com/2026/03/26/how-we-standardized-mariadb-in-our-integration-server/>)

Author: Eloy Gonzalez

Published: 2026-03-26T18:59:43Z

Content type: article

Language: en

Sources: [Wealthfront](<https://devfeed.tech/sources/wealthfront.md>)

Topics: [MariaDB](<https://devfeed.tech/topics/mariadb.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [migration](<https://devfeed.tech/topics/migration.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [Jenkins](<https://devfeed.tech/topics/jenkins.md>), [CI/CD](<https://devfeed.tech/topics/cicd.md>), [Back end](<https://devfeed.tech/topics/backend.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [backend](<https://devfeed.tech/tags/backend.md>), [careers](<https://devfeed.tech/tags/careers.md>), [ci-cd](<https://devfeed.tech/tags/ci-cd.md>), [data](<https://devfeed.tech/tags/data.md>), [engineering-culture](<https://devfeed.tech/tags/engineering-culture.md>), [hibernate](<https://devfeed.tech/tags/hibernate.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [integrity](<https://devfeed.tech/tags/integrity.md>), [jenkins](<https://devfeed.tech/tags/jenkins.md>), [locking](<https://devfeed.tech/tags/locking.md>), [migration](<https://devfeed.tech/tags/migration.md>), [modularization](<https://devfeed.tech/tags/modularization.md>), [production](<https://devfeed.tech/tags/production.md>), [sql](<https://devfeed.tech/tags/sql.md>), [testing](<https://devfeed.tech/tags/testing.md>), [tests](<https://devfeed.tech/tags/tests.md>), [wealthfront-engineering](<https://devfeed.tech/tags/wealthfront-engineering.md>)

### AI overview

Wealthfront describes migrating its Integration Server from HSQLDB to MariaDB to improve parity with production. The article covers the migration strategy, architectural hurdles, and benefits for data integrity, concurrency, locking, and production-like testing.

### Source excerpt

Engineering at Wealthfront is centered on the idea that code should be written to facilitate testing, not the other way around. Without a staging environment to fall back on, we maximize confidence through a sophisticated, multi-layered testing strategy. While unit tests provide our most rigorous line of defense, our Integration Server is the workhorse that... Read more

## Waiting for PostgreSQL 19 - Introduce the REPACK command

DevFeed: [Waiting for PostgreSQL 19 - Introduce the REPACK command](<https://devfeed.tech/articles/waiting-for-postgresql-19-introduce-the-repack-command-33681.md>)

Original publisher: [Read original article](<https://www.depesz.com/2026/03/19/waiting-for-postgresql-19-introduce-the-repack-command/>)

Author: depesz

Published: 2026-03-19T18:07:59Z

Content type: article

Language: en

Sources: [select \* from depesz;](<https://devfeed.tech/sources/select-from-depesz.md>)

Topics: [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [postgresql clusters](<https://devfeed.tech/topics/postgresql-clusters.md>)

Tags: [analyze](<https://devfeed.tech/tags/analyze.md>), [bloat](<https://devfeed.tech/tags/bloat.md>), [command](<https://devfeed.tech/tags/command.md>), [indexes](<https://devfeed.tech/tags/indexes.md>), [locking](<https://devfeed.tech/tags/locking.md>), [maintenance](<https://devfeed.tech/tags/maintenance.md>), [pg-repack](<https://devfeed.tech/tags/pg-repack.md>), [pg19](<https://devfeed.tech/tags/pg19.md>), [planner](<https://devfeed.tech/tags/planner.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [repack](<https://devfeed.tech/tags/repack.md>), [uncategorized](<https://devfeed.tech/tags/uncategorized.md>), [vacuum](<https://devfeed.tech/tags/vacuum.md>), [waiting](<https://devfeed.tech/tags/waiting.md>)

### AI overview

The article examines PostgreSQL 19's proposed built-in REPACK command, which combines functionality associated with VACUUM FULL and CLUSTER. It demonstrates reclaiming space and reordering a table, discusses locking because concurrent operation is not yet supported, and introduces the pg_stat_progress_repack progress view and available command forms.

### Source excerpt

On 10th of March 2026, Álvaro Herrera committed patch: Introduce the REPACK command REPACK absorbs the functionality of VACUUM FULL and CLUSTER in a single command. Because this functionality is completely different from regular VACUUM, having it separate from VACUUM makes it easier for users to understand; as for CLUSTER, the term is heavily ... Continue reading "Waiting for PostgreSQL 19 - Introduce the REPACK command"

## Avoiding the Next Supply Chain Disaster with GitHub and Gradle

DevFeed: [Avoiding the Next Supply Chain Disaster with GitHub and Gradle](<https://devfeed.tech/articles/avoiding-the-next-supply-chain-disaster-with-github-and-gradle-24596.md>)

Original publisher: [Read original article](<https://blog.gradle.org/avoid-supply-chain-disaster-with-github-gradle>)

Author: Tom Tresansky

Published: 2026-02-25T05:00:00Z

Content type: article

Language: en

Sources: [The Gradle Blog](<https://devfeed.tech/sources/the-gradle-blog.md>)

Topics: [supply-chain-security](<https://devfeed.tech/topics/supply-chain-security.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [GitHub](<https://devfeed.tech/topics/github.md>), [Vulnerabilities](<https://devfeed.tech/topics/vulnerabilities.md>), [Reverse Dependencies](<https://devfeed.tech/topics/reverse-dependencies.md>), [Java](<https://devfeed.tech/topics/java.md>), [Android](<https://devfeed.tech/topics/android.md>), [Maven](<https://devfeed.tech/topics/maven.md>), [npm](<https://devfeed.tech/topics/npm.md>), [Logging](<https://devfeed.tech/topics/logging.md>)

Tags: [dependencies](<https://devfeed.tech/tags/dependencies.md>), [developers](<https://devfeed.tech/tags/developers.md>), [github](<https://devfeed.tech/tags/github.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [java](<https://devfeed.tech/tags/java.md>), [locking](<https://devfeed.tech/tags/locking.md>), [logging](<https://devfeed.tech/tags/logging.md>), [npm](<https://devfeed.tech/tags/npm.md>), [security](<https://devfeed.tech/tags/security.md>), [supply-chain](<https://devfeed.tech/tags/supply-chain.md>), [supply-chain-attacks](<https://devfeed.tech/tags/supply-chain-attacks.md>), [supply-chain-security](<https://devfeed.tech/tags/supply-chain-security.md>), [vulnerabilities](<https://devfeed.tech/tags/vulnerabilities.md>)

### AI overview

This article explains how GitHub and Gradle can help Android and JVM developers reduce software supply-chain risk. It covers dependency drift, vulnerability exposure, resolved dependency visibility, continuous monitoring, automated fixes, and Build Scan® analysis, with Shai-Hulud and Log4Shell as examples of supply-chain threats.

### Source excerpt

Supply chain security is a big deal, and it's dangerously easy to ignore. For Android or JVM developers, the sheer scale of the ecosystem is our greatest strength, and our greatest risk. When you build an application, you aren't just responsible for your own code; you're responsible for a massive, invisible tree of dependencies. This presents two distinct security challenges: Dependency Drift: Resolved dependencies can appear, disappear, or change versions without you ever touching your build.gradle.(kts) file. A bad actor can slip a malicious artifact into your dependency graph unnoticed. Vulnerability Exposure: Even locking your dependencies to avoid unexpected changes doesn't absolve you from monitoring their state. A library you've used for years might have a critical vulnerability (CVE) discovered tomorrow. We've recently seen this play out in the wild with attacks like the Shai-Hulud npm supply-chain exploit, where attackers poisoned popular packages to execute arbitrary code downstream, and the critical Log4Shell vulnerability, which demonstrated the catastrophic risk posed by an exploit in a foundational Java logging library. We recently outlined our defense against supply chain attacks in our deep dives on continuous GRC and our Nx vulnerability response. The good news: if your Gradle projects live on GitHub, you already have everything you need to minimize your known vulnerability count, without manually auditing resolved dependencies all day. In this post, we'll walk through how GitHub and Gradle work together to: Give you a complete, accurate view of your resolved dependencies Continuously monitor those dependencies for vulnerabilities Automatically propose and validate fixes Use our free Build Scan® service to understand what changed and why Why dependency monitoring is harder than it looks Unlike more traditional build tools like Maven, which rely on relatively static dependency declarations, Gradle is a dynamic, highly programmable build engine. While

## How to Prevent the DB from Becoming a Bottleneck

DevFeed: [How to Prevent the DB from Becoming a Bottleneck](<https://devfeed.tech/articles/how-to-prevent-the-db-from-becoming-a-bottleneck-34683.md>)

Original publisher: [Read original article](<https://newsletter.systemdesigncodex.com/p/how-to-prevent-the-db-from-becoming>)

Author: Saurabh Dashora

Published: 2026-02-24T08:15:03Z

Content type: tutorial

Language: en

Sources: [System Design Codex](<https://devfeed.tech/sources/system-design-codex.md>)

Topics: [Databases](<https://devfeed.tech/topics/databases.md>), [Back end](<https://devfeed.tech/topics/backend.md>), [Latency](<https://devfeed.tech/topics/latency.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [Deadlock](<https://devfeed.tech/topics/deadlock.md>), [Transactions](<https://devfeed.tech/topics/transactions.md>), [MongoDB](<https://devfeed.tech/topics/mongodb.md>), [MySQL](<https://devfeed.tech/topics/mysql.md>), [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>)

Tags: [concurrency](<https://devfeed.tech/tags/concurrency.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [latency](<https://devfeed.tech/tags/latency.md>), [locking](<https://devfeed.tech/tags/locking.md>), [performance](<https://devfeed.tech/tags/performance.md>)

### AI overview

This tutorial explains how databases can become application performance bottlenecks even when application code is optimized. It covers diagnosing slow queries with profiling and logs, monitoring execution time and latency, and understanding how locking and deadlocks can affect concurrent transactions.

### Source excerpt

Tips and Strategies

## Fixing SQLite Database Locks in Spring Boot with Connection and Transaction Configuration

DevFeed: [Fixing SQLite Database Locks in Spring Boot with Connection and Transaction Configuration](<https://devfeed.tech/articles/how-we-fixed-sqlite-database-locks-in-spring-boot-and-got-a-5x-performance-boost-38750.md>)

Original publisher: [Read original article](<https://www.paleblueapps.com/rockandnull/spring-boot-sqlite-locking-fix/>)

Author: Anil Kumar Beesetti

Published: 2026-01-30T10:36:55Z

Content type: tutorial

Language: en

Sources: [Rock and Null](<https://devfeed.tech/sources/rock-and-null.md>)

Topics: [Spring Boot](<https://devfeed.tech/topics/spring-boot.md>), [SQLite](<https://devfeed.tech/topics/sqlite.md>), [locking](<https://devfeed.tech/topics/locking.md>), [jpa](<https://devfeed.tech/topics/jpa.md>), [optimize](<https://devfeed.tech/topics/optimize.md>)

Tags: [hikaricp](<https://devfeed.tech/tags/hikaricp.md>), [jpa](<https://devfeed.tech/tags/jpa.md>), [locking](<https://devfeed.tech/tags/locking.md>), [locks](<https://devfeed.tech/tags/locks.md>), [optimize](<https://devfeed.tech/tags/optimize.md>), [performance](<https://devfeed.tech/tags/performance.md>), [spring-boot](<https://devfeed.tech/tags/spring-boot.md>), [sqlite](<https://devfeed.tech/tags/sqlite.md>)

### AI overview

This tutorial explains how a Spring Boot application using SQLite experienced intermittent database locks and request failures. It attributes the issue to connection pooling and lifecycle settings, then describes configuring HikariCP for a single connection, tightening connection management, enabling leak detection, disabling Open-in-View, and controlling transactions manually. In the reported k6 load test, throughput increased from 1,736 to 11,381 requests in five minutes, success rate rose from 76% to 99%, and failed requests fell from 411 to 1.

### Source excerpt

Struggling with intermittent database locks in your Spring Boot and SQLite setup? Learn the specific HikariCP and JPA configurations we used to eliminate production hangs and increase throughput by 6.5x.

## Waiting for PostgreSQL 19 - Implement ALTER TABLE ... MERGE/SPLIT PARTITIONS ... command

DevFeed: [Waiting for PostgreSQL 19 - Implement ALTER TABLE ... MERGE/SPLIT PARTITIONS ... command](<https://devfeed.tech/articles/waiting-for-postgresql-19-implement-alter-table-merge-split-partitions-command-33671.md>)

Original publisher: [Read original article](<https://www.depesz.com/2026/01/04/waiting-for-postgresql-19-implement-alter-table-merge-split-partitions-command/>)

Author: depesz

Published: 2026-01-04T17:30:47Z

Content type: opinion

Language: en

Sources: [select \* from depesz;](<https://devfeed.tech/sources/select-from-depesz.md>)

Topics: [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [function](<https://devfeed.tech/topics/function.md>)

Tags: [command](<https://devfeed.tech/tags/command.md>), [locking](<https://devfeed.tech/tags/locking.md>), [merge](<https://devfeed.tech/tags/merge.md>), [partition](<https://devfeed.tech/tags/partition.md>), [partitioning](<https://devfeed.tech/tags/partitioning.md>), [partitions](<https://devfeed.tech/tags/partitions.md>), [pg19](<https://devfeed.tech/tags/pg19.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [split](<https://devfeed.tech/tags/split.md>), [uncategorized](<https://devfeed.tech/tags/uncategorized.md>), [waiting](<https://devfeed.tech/tags/waiting.md>)

### AI overview

A PostgreSQL 19 development update describes the ALTER TABLE command for merging and splitting partitions. The patch was rolled back after earlier discussion, then recommitted; testing showed it worked as expected, with slightly less locking observed. Further changes may be needed before the feature reaches the final release.

### Source excerpt

Important update This has been rolled back after some discussion. On 14th of December 2025, Alexander Korotkov committed patch: Implement ALTER TABLE ... MERGE PARTITIONS ... command This new DDL command merges several partitions into a single partition of the target table. The target partition is created using the new createPartitionTable() function with the ... Continue reading "Waiting for PostgreSQL 19 - Implement ALTER TABLE ... MERGE/SPLIT PARTITIONS ... command"

## Underrust: What is the cost of Mutex, RwLock and AtomicPtr?

DevFeed: [Underrust: What is the cost of Mutex, RwLock and AtomicPtr?](<https://devfeed.tech/articles/underrust-what-is-the-cost-of-mutex-rwlock-and-atomicptr-35479.md>)

Original publisher: [Read original article](<https://darkcoding.net/software/underrust-mutual-exclusion/>)

Author: Graham King

Published: 2025-05-05T20:05:00Z

Content type: tutorial

Language: en

Sources: [Graham King](<https://devfeed.tech/sources/graham-king.md>)

Topics: [Rust](<https://devfeed.tech/topics/rust.md>), [Concurrent Programming](<https://devfeed.tech/topics/concurrent-programming.md>), [x86](<https://devfeed.tech/topics/x86.md>), [cpu](<https://devfeed.tech/topics/cpu.md>), [Assembly](<https://devfeed.tech/topics/assembly.md>)

Tags: [assembly](<https://devfeed.tech/tags/assembly.md>), [concurrent](<https://devfeed.tech/tags/concurrent.md>), [cpu](<https://devfeed.tech/tags/cpu.md>), [cycles](<https://devfeed.tech/tags/cycles.md>), [locking](<https://devfeed.tech/tags/locking.md>), [performance](<https://devfeed.tech/tags/performance.md>), [rust](<https://devfeed.tech/tags/rust.md>), [software](<https://devfeed.tech/tags/software.md>), [synchronization](<https://devfeed.tech/tags/synchronization.md>), [underrust](<https://devfeed.tech/tags/underrust.md>)

### AI overview

A Rust-focused analysis uses assembly output to examine the cost of Mutex, RwLock, and atomic operations for many concurrent readers and an occasional writer. It scopes the discussion to Linux and x86, noting that the fast-path operations discussed are roughly in the range of 20 to 30 CPU cycles.

### Source excerpt

With many concurrent readers and a single occasional writer, which mutual exclusion primitive should you use? Let's look at the assembly to find out.

## Navigating PostgreSQL Locks with Neon and Atlas

DevFeed: [Navigating PostgreSQL Locks with Neon and Atlas](<https://devfeed.tech/articles/navigating-postgresql-locks-with-neon-and-atlas-5733.md>)

Original publisher: [Read original article](<https://neon.com/blog/postgres-locks-neon-atlas>)

Author: Rotem Tamir

Published: 2025-03-14T18:26:07Z

Content type: article

Language: en

Sources: [Blog -- Neon Docs](<https://devfeed.tech/sources/blog-neon-docs.md>)

Topics: [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [Database Migration](<https://devfeed.tech/topics/database-migration.md>), [Database](<https://devfeed.tech/topics/database.md>), [Back end](<https://devfeed.tech/topics/backend.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [backend](<https://devfeed.tech/tags/backend.md>), [community](<https://devfeed.tech/tags/community.md>), [cpu](<https://devfeed.tech/tags/cpu.md>), [database](<https://devfeed.tech/tags/database.md>), [locking](<https://devfeed.tech/tags/locking.md>), [migrations](<https://devfeed.tech/tags/migrations.md>), [performance](<https://devfeed.tech/tags/performance.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [schema](<https://devfeed.tech/tags/schema.md>)

### AI overview

The article explains how PostgreSQL schema migrations can acquire long-running locks and cause production outages. It uses a uniqueness-constraint example and describes creating and validating a unique index before attaching the constraint to reduce blocking.

### Source excerpt

As applications evolve, making changes to your database schema is inevitable, whether you're adding indexes to keep performance up with a growing user base or adding new features to an existing product. Most of the time, these schema migrations will go smoothly, but if you're not...

## Canva incident report: API Gateway outage

DevFeed: [Canva incident report: API Gateway outage](<https://devfeed.tech/articles/canva-incident-report-api-gateway-outage-37929.md>)

Original publisher: [Read original article](<https://www.canva.dev/blog/engineering/canva-incident-report-api-gateway-outage/>)

Author: Brendan Humphreys

Published: 2024-12-20T00:00:01Z

Content type: article

Language: en

Sources: [Canva Engineering](<https://devfeed.tech/sources/canva-engineering.md>)

Topics: [incident](<https://devfeed.tech/topics/incident.md>), [Amazon API Gateway](<https://devfeed.tech/topics/amazon-api-gateway.md>), [Deployment](<https://devfeed.tech/topics/deployment.md>), [Caching](<https://devfeed.tech/topics/caching.md>), [Latency](<https://devfeed.tech/topics/latency.md>), [Netty](<https://devfeed.tech/topics/netty.md>), [Microservices](<https://devfeed.tech/topics/microservices.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [api-gateway](<https://devfeed.tech/tags/api-gateway.md>), [authentication](<https://devfeed.tech/tags/authentication.md>), [authorization](<https://devfeed.tech/tags/authorization.md>), [aws](<https://devfeed.tech/tags/aws.md>), [caching](<https://devfeed.tech/tags/caching.md>), [cloudflare](<https://devfeed.tech/tags/cloudflare.md>), [deployment](<https://devfeed.tech/tags/deployment.md>), [ecs](<https://devfeed.tech/tags/ecs.md>), [gateway](<https://devfeed.tech/tags/gateway.md>), [incident](<https://devfeed.tech/tags/incident.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [java](<https://devfeed.tech/tags/java.md>), [latency](<https://devfeed.tech/tags/latency.md>), [locking](<https://devfeed.tech/tags/locking.md>), [microservices](<https://devfeed.tech/tags/microservices.md>), [outage](<https://devfeed.tech/tags/outage.md>), [pir](<https://devfeed.tech/tags/pir.md>), [post-incident-review](<https://devfeed.tech/tags/post-incident-review.md>), [post-mortem](<https://devfeed.tech/tags/post-mortem.md>), [rate-limiting](<https://devfeed.tech/tags/rate-limiting.md>), [report](<https://devfeed.tech/tags/report.md>), [s3](<https://devfeed.tech/tags/s3.md>)

### AI overview

Canva's incident report examines a November 12, 2024 outage that made canva.com unavailable for about 52 minutes. It attributes the outage to failures in the API Gateway cluster involving an editor deployment, a locking issue, and network latency between Cloudflare locations, and describes the incident timeline, mitigation, and prevention steps.

### Source excerpt

An incident report for the Canva outage on November 12, 2024.

## MVCC and serializability in HyPer

DevFeed: [MVCC and serializability in HyPer](<https://devfeed.tech/articles/mvcc-and-serializability-in-hyper-39630.md>)

Original publisher: [Read original article](<https://www.gauravsarma.com/posts/2024-11-06_MVCC-and-serializability-in-HyPer-564430884c9a>)

Published: 2024-11-06T00:00:00Z

Content type: article

Language: en

Sources: [Gaurav Sarma's Blog](<https://devfeed.tech/sources/gaurav-sarma-s-blog.md>)

Topics: [Database](<https://devfeed.tech/topics/database.md>), [Transactions](<https://devfeed.tech/topics/transactions.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [locking](<https://devfeed.tech/topics/locking.md>), [Deadlock](<https://devfeed.tech/topics/deadlock.md>), [processing](<https://devfeed.tech/topics/processing.md>), [systems](<https://devfeed.tech/topics/systems.md>)

Tags: [concurrency](<https://devfeed.tech/tags/concurrency.md>), [concurrency-control](<https://devfeed.tech/tags/concurrency-control.md>), [database](<https://devfeed.tech/tags/database.md>), [deadlock](<https://devfeed.tech/tags/deadlock.md>), [locking](<https://devfeed.tech/tags/locking.md>), [mvcc](<https://devfeed.tech/tags/mvcc.md>), [processing](<https://devfeed.tech/tags/processing.md>), [transactions](<https://devfeed.tech/tags/transactions.md>)

### AI overview

This article explains Multi-Version Concurrency Control (MVCC), contrasts it with Two-Phase Locking, and introduces MVCC patterns and techniques used in HyPer. It discusses locking phases, deadlocks, cascading rollbacks, and concurrency limitations.

### Source excerpt

. [MVCC and Serializability in HyPer](mvcc-and-serializability-in-hyper-cover...

## Leader Election With S3 Conditional Writes

DevFeed: [Leader Election With S3 Conditional Writes](<https://devfeed.tech/articles/leader-election-with-s3-conditional-writes-18847.md>)

Original publisher: [Read original article](<https://www.morling.dev/blog/leader-election-with-s3-conditional-writes/>)

Published: 2024-08-26T08:15:00Z

Content type: tutorial

Language: en

Sources: [Gunnar Morling](<https://devfeed.tech/sources/gunnar-morling.md>)

Topics: [Amazon S3](<https://devfeed.tech/topics/amazon-s3.md>), [distributed-systems](<https://devfeed.tech/topics/distributed-systems.md>), [Kafka](<https://devfeed.tech/topics/kafka.md>), [API](<https://devfeed.tech/topics/api.md>), [Filesystems](<https://devfeed.tech/topics/filesystems.md>), [JSON](<https://devfeed.tech/topics/json.md>)

Tags: [amazon-s3](<https://devfeed.tech/tags/amazon-s3.md>), [aws](<https://devfeed.tech/tags/aws.md>), [data](<https://devfeed.tech/tags/data.md>), [distributed](<https://devfeed.tech/tags/distributed.md>), [distributed-systems](<https://devfeed.tech/tags/distributed-systems.md>), [json](<https://devfeed.tech/tags/json.md>), [kafka](<https://devfeed.tech/tags/kafka.md>), [locking](<https://devfeed.tech/tags/locking.md>), [locks](<https://devfeed.tech/tags/locks.md>), [object-storage](<https://devfeed.tech/tags/object-storage.md>), [s3](<https://devfeed.tech/tags/s3.md>)

### AI overview

This article explains how to implement leader election for distributed workloads using Amazon S3 conditional writes. Nodes compete to create a lock file, and a new file is used for each leadership epoch because conditional writes do not prevent lost updates to existing files.

### Source excerpt

Table of Contents The Algorithm Obtaining the Lock Expiring a Lock Lock Validity Fencing Off Zombies In distributed systems, for instance when scaling out some workload to multiple compute nodes, it is a common requirement to select a leader for performing a given task: only one of the nodes should process the records from a Kafka topic partition, write to a file system, call a remote API, etc. Otherwise, multiple workers may end up doing the same task twice, overwriting each other's data, and worse.

## Making unwinding through JIT-ed code scalable - b-tree operations

DevFeed: [Making unwinding through JIT-ed code scalable - b-tree operations](<https://devfeed.tech/articles/making-unwinding-through-jit-ed-code-scalable-b-tree-operations-25077.md>)

Original publisher: [Read original article](<https://databasearchitects.blogspot.com/2022/06/btreeoperations.html>)

Author: Thomas Neumann (noreply@blogger.com)

Published: 2022-06-26T09:00:00Z

Content type: article

Language: en

Sources: [Database Architects](<https://devfeed.tech/sources/database-architects.md>)

Topics: [Algorithms](<https://devfeed.tech/topics/algorithms.md>), [Code](<https://devfeed.tech/topics/code.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [JIT](<https://devfeed.tech/topics/jit.md>)

Tags: [algorithms](<https://devfeed.tech/tags/algorithms.md>), [article](<https://devfeed.tech/tags/article.md>), [code](<https://devfeed.tech/tags/code.md>), [complexity](<https://devfeed.tech/tags/complexity.md>), [jit](<https://devfeed.tech/tags/jit.md>), [locking](<https://devfeed.tech/tags/locking.md>)

### AI overview

This article explains high-level B-tree insertion and deletion algorithms in a series about scalable unwinding through JIT-ed code. It describes eager splitting of full nodes during insertion to simplify top-to-bottom locking, and merging or balancing nodes during deletion to preserve occupancy and avoid upward propagation.

### Source excerpt

This article is part of the series about scalable unwinding that starts here. Now that we have all infrastructure in place, we look at the high-level algorithms. For inserts, we walk down the tree until we hit the leaf-node that should contain the new value. If that node is full, we split the leaf node, and insert a new separator into the parent node to distinguish the two nodes. To avoid propagating that split further up (as the inner node might be full, too, requiring an inner split), we eagerly split full inner nodes when walking down. This guarantees that the parent of a node is never full, which allows us to look at nodes purely from top-to-bottom, which greatly simplifies locking. The splits themselves are relatively simple, we just copy the right half of each node into a new node, reduce the size of the original node, and insert a separator into the parent. However two problems require some care 1) we might have to split the root, which does not have a parent itself, and 2) the node split could mean that the value we try to insert could be either in the left or the right node. The split functions always update the node iterator to the correct node, and release the lock on the node that is not needed after the split. // Insert a new separator after splitting static void btree_node_update_separator_after_split (struct btree_node *n, uintptr_t old_separator, uintptr_t new_separator, struct btree_node *new_right) { unsigned slot = btree_node_find_inner_slot (n, old_separator); for (unsigned index = n->entry_count; index > slot; --index) n->content.children[index] = n->content.children[index - 1]; n->content.children[slot].separator = new_separator; n->content.children[slot + 1].child = new_right; n->entry_count++; } // Check if we are splitting the root static void btree_handle_root_split (struct btree *t, struct btree_node **node, struct btree_node **parent) { // We want to keep the root pointer stable to allow for contention // free reads. Thus, we split the ro

## Making unwinding through JIT-ed code scalable - Optimistic Lock Coupling

DevFeed: [Making unwinding through JIT-ed code scalable - Optimistic Lock Coupling](<https://devfeed.tech/articles/making-unwinding-through-jit-ed-code-scalable-optimistic-lock-coupling-25079.md>)

Original publisher: [Read original article](<https://databasearchitects.blogspot.com/2022/06/optimisticlockcoupling.html>)

Author: Thomas Neumann (noreply@blogger.com)

Published: 2022-06-26T08:52:00Z

Content type: article

Language: en

Sources: [Database Architects](<https://devfeed.tech/sources/database-architects.md>)

Topics: [Exception](<https://devfeed.tech/topics/exception.md>), [Data structures](<https://devfeed.tech/topics/data-structures.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [data-structure](<https://devfeed.tech/tags/data-structure.md>), [exception](<https://devfeed.tech/tags/exception.md>), [exception-handling](<https://devfeed.tech/tags/exception-handling.md>), [locking](<https://devfeed.tech/tags/locking.md>), [mutex](<https://devfeed.tech/tags/mutex.md>), [performance](<https://devfeed.tech/tags/performance.md>), [set](<https://devfeed.tech/tags/set.md>)

### AI overview

The article explains a scalable approach to unwinding through JIT-ed code using a read-optimized B-tree with optimistic lock coupling. Writers use conventional exclusive lock coupling, while readers use version locks and validate their reads so they can run in parallel when writes are uncommon.

### Source excerpt

This article is part of the series about scalable unwinding that starts here. When thinking about exception handling it is reasonable to assume that we will have far more unwinding requests than changes to the unwinding tables. In our setup, the tables only change when JITed code is added to or removed from the program. That is always expensive to begin with due the mprotect calls, TLB shootdowns, etc. Thus we can safely assume that we will have at most a few hundred updates per second even in extreme cases, probably far less. Lookups however can easily reach thousands or even millions per second, as we do one lookup per frame. This motivates us to use a read-optimized data structure, a b-tree with optimistic lock coupling: Writers use traditional lock coupling (lock parent node exclusive, lock child node exclusive, release parent node, lock child of child, etc.), which works fine as long as there is not too much contention. Readers however have to do something else, as we expect thousands of them. One might be tempted to use a rw-lock for readers, but that does not help. Locking an rw-lock in shared mode causes an atomic write, which makes the threads fight over the cache line of the lock even if there is no (logical) contention. Instead, we use version locks, where readers do no write at all: // Common logic for version locks struct version_lock { // The lock itself. The lowest bit indicates an exclusive lock, // the second bit indicates waiting threads. All other bits are // used as counter to recognize changes. // Overflows are okay here, we must only prevent overflow to the // same value within one lock_optimistic/validate // range. Even on 32 bit platforms that would require 1 billion // frame registrations within the time span of a few assembler // instructions. uintptr_t version_lock; }; #ifdef __GTHREAD_HAS_COND // We should never get contention within the tree as it rarely changes. // But if we ever do get contention we use these for waiting static __gthre

## PostgreSQL Concurrency: an Article Series

DevFeed: [PostgreSQL Concurrency: an Article Series](<https://devfeed.tech/articles/postgresql-concurrency-an-article-series-34607.md>)

Original publisher: [Read original article](<https://tapoueh.org/blog/2018/08/postgresql-concurrency-an-article-series/>)

Author: Dimitri Fontaine PostgreSQL Major Contributor; Author

Published: 2018-08-14T08:49:02Z

Content type: tutorial

Language: en

Sources: [Dimitri Fontaine](<https://devfeed.tech/sources/dimitri-fontaine.md>)

Topics: [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [consistency](<https://devfeed.tech/topics/consistency.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>)

Tags: [acid](<https://devfeed.tech/tags/acid.md>), [article](<https://devfeed.tech/tags/article.md>), [cache-invalidation](<https://devfeed.tech/tags/cache-invalidation.md>), [caching](<https://devfeed.tech/tags/caching.md>), [concurrency](<https://devfeed.tech/tags/concurrency.md>), [consistency](<https://devfeed.tech/tags/consistency.md>), [database](<https://devfeed.tech/tags/database.md>), [isolation-level](<https://devfeed.tech/tags/isolation-level.md>), [locking](<https://devfeed.tech/tags/locking.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [series](<https://devfeed.tech/tags/series.md>), [sql](<https://devfeed.tech/tags/sql.md>), [transactions](<https://devfeed.tech/tags/transactions.md>), [triggers](<https://devfeed.tech/tags/triggers.md>)

### AI overview

This article series explains how PostgreSQL handles concurrent access while maintaining data consistency. It covers data modification, isolation levels, locking, ACID transactions, concurrency-oriented data modeling, event processing, materialized views for caching, and triggers for transactionally correct cache maintenance.

### Source excerpt

PostgreSQL is a relational database management system. It's even the world's most advanced open source one of them. As such, as its core, Postgres solves concurrent access to a set of data and maintains consistency while allowing concurrent operations. In the PostgreSQL Concurrency series of articles here we did see several aspects of how to handle concurrent use cases of your application design with PostgreSQL. The main thing to remember is that a Database Management System first task is to handle concurrency access to the data for you.

## PostgreSQL Event Based Processing

DevFeed: [PostgreSQL Event Based Processing](<https://devfeed.tech/articles/postgresql-event-based-processing-34604.md>)

Original publisher: [Read original article](<https://tapoueh.org/blog/2018/07/postgresql-event-based-processing/>)

Author: Dimitri Fontaine PostgreSQL Major Contributor; Author

Published: 2018-07-16T07:27:54Z

Content type: tutorial

Language: en

Sources: [Dimitri Fontaine](<https://devfeed.tech/sources/dimitri-fontaine.md>)

Topics: [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [SQL](<https://devfeed.tech/topics/sql.md>)

Tags: [concurrency](<https://devfeed.tech/tags/concurrency.md>), [database](<https://devfeed.tech/tags/database.md>), [locking](<https://devfeed.tech/tags/locking.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [sql](<https://devfeed.tech/tags/sql.md>)

### AI overview

This article explains how PostgreSQL triggers support event-based processing within the same transaction as event registration. It focuses on maintaining summary tables transactionally and considers the effects on concurrency.

### Source excerpt

In the previous article of the series Modeling for Concurrency, we saw how to model your application for highly concurrent activity. It was a follow-up to the article entitled PostgreSQL Concurrency: Isolation and Locking, which was a primer on PostgreSQL isolation and locking properties and behaviors. Today's article takes us a step further and builds on what we did in the previous articles in our series. After having had all the characters from Shakespeare's A Midsummer Night's Dream tweet their own lines in our database in PostgreSQL Concurrency: Data Modification Language, and having had them like and retweet a lot in PostgreSQL Concurrency: Isolation and Locking, we saw how to manage concurrent retweets in an efficient way in Computing and Caching. What we did implement in the previous article is a cache system, all with its necessary cache invalidation policy. Sometimes though, the processing of an event needs to happen within the same transaction where the event is registered in your system. PostgreSQL makes it possible to maintain a summary table transactionally thanks to its trigger support. Today, we're going to dive in how to maintain a summary table with triggers, and its impact on concurrency.

## Modeling for Concurrency

DevFeed: [Modeling for Concurrency](<https://devfeed.tech/articles/modeling-for-concurrency-34602.md>)

Original publisher: [Read original article](<https://tapoueh.org/blog/2018/07/modeling-for-concurrency/>)

Author: Dimitri Fontaine PostgreSQL Major Contributor; Author

Published: 2018-07-10T08:26:47Z

Content type: article

Language: en

Sources: [Dimitri Fontaine](<https://devfeed.tech/sources/dimitri-fontaine.md>)

Topics: [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [SQL](<https://devfeed.tech/topics/sql.md>)

Tags: [concurrency](<https://devfeed.tech/tags/concurrency.md>), [database](<https://devfeed.tech/tags/database.md>), [enum](<https://devfeed.tech/tags/enum.md>), [locking](<https://devfeed.tech/tags/locking.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [sql](<https://devfeed.tech/tags/sql.md>)

### AI overview

This article explains how to model tweet likes and retweets in PostgreSQL for concurrent workloads. It replaces counters that require concurrent updates with activity records, then derives counts from those records and uses inserts for new actions.

### Source excerpt

Let's continue to dive in PostgreSQL Concurrency. Last week's article PostgreSQL Concurrency: Isolation and Locking was a primer on PostgreSQL isolation and locking properties and behaviors. Today's article takes us a step further and builds on what we did last week, in particular the database modeling for a tweet like application. After having had all the characters from Shakespeare's A Midsummer Night's Dream tweet their own lines in our database in PostgreSQL Concurrency: Data Modification Language, it's time for them to do some actions on the tweets: likes and retweet. Of course, we're going to put concurrency to the test, so we're going to have to handle very very popular tweets from the play!

## PostgreSQL Concurrency: Isolation and Locking

DevFeed: [PostgreSQL Concurrency: Isolation and Locking](<https://devfeed.tech/articles/postgresql-concurrency-isolation-and-locking-34603.md>)

Original publisher: [Read original article](<https://tapoueh.org/blog/2018/07/postgresql-concurrency-isolation-and-locking/>)

Author: Dimitri Fontaine PostgreSQL Major Contributor; Author

Published: 2018-07-03T11:30:13Z

Content type: tutorial

Language: en

Sources: [Dimitri Fontaine](<https://devfeed.tech/sources/dimitri-fontaine.md>)

Topics: [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [consistency](<https://devfeed.tech/topics/consistency.md>), [Transactions](<https://devfeed.tech/topics/transactions.md>), [acid](<https://devfeed.tech/topics/acid.md>)

Tags: [acid](<https://devfeed.tech/tags/acid.md>), [concurrency](<https://devfeed.tech/tags/concurrency.md>), [consistency](<https://devfeed.tech/tags/consistency.md>), [locking](<https://devfeed.tech/tags/locking.md>), [pg-dump](<https://devfeed.tech/tags/pg-dump.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [transactions](<https://devfeed.tech/tags/transactions.md>)

### AI overview

This primer explains PostgreSQL isolation and locking as mechanisms for handling concurrent access while maintaining consistency. It discusses ACID-compliant transactions, isolation levels, locking control, and the snapshot behavior used by pg_dump for backups.

### Source excerpt

PostgreSQL is a relational database management system. It's even the world's most advanced open source one of them. As such, as its core, Postgres solves concurrent access to a set of data and maintains consistency while allowing concurrent operations. This article is a primer on PostgreSQL Isolation and Locking properties and behaviors. You might be interested into the previous article in the series: PostgreSQL Concurrency: Data Modification Language.

[Next page](<https://devfeed.tech/tags/locking.md?cursor=WyIyMDE4LTA3LTAzVDExOjMwOjEzKzAwOjAwIiwgIjIwOTViMDA4LWQyZDMtNGEwMS05ZWYwLTY4YjkzZjlmMDU2YiJd>)