Resolving DNAT Rule Shadowing and Port Mismatch on Eltex Gateways

Summary A critical connectivity failure occurred during the implementation of a Destination Network Address Translation (DNAT) policy on an Eltex gateway. The intent was to expose internal services (HTTP and SSH) to a public network by mapping a public “UPLINK” address to private server IPs. However, the configuration logic contained overlapping rules and protocol mismatches, … Read more

Debugging a MediaWiki‑MariaDB Docker Compose stack that silently fails due to pl

Summary This postmortem covers a common Docker Compose misconfiguration when deploying MediaWiki against MariaDB. The supplied docker-compose.yml contains placeholder tokens (—) in place of real values for the container name, database password, and other critical fields. While the structure of the compose file is mostly sound, these missing values prevent the stack from starting correctly … Read more

Preventing Postgres search_path Drift During Spring Boot Migrations

Summary During a production migration, an application failed to locate newly created tables, leading to UndefinedTableException errors in the Spring Boot service. The investigation revealed that the tables were being created in the public schema by default, while the application’s connection string and search path were configured to look for a specific tenant-specific schema. This … Read more

Avoid Dependency Conflicts with Virtual Environment Practices

Summary Poor environment management in Python projects leads to dependency conflicts, reproducibility issues, and team collaboration breakdowns. This postmortem examines the critical importance of proper virtual environment setup and dependency management for Python projects. Root Cause The fundamental issue stems from not isolating project dependencies through virtual environments. Without isolation: Global package installations create version … Read more

Fixing .NET Config Binder Issues with Enumerable Properties in a Production Outa

Summary A production outage was triggered when a critical configuration update failed to propagate to a service. The issue stemmed from a misunderstanding of how the Microsoft.Extensions.Configuration.Binder interacts with collection types and static properties. While the configuration existed in appsettings.json, the application continued to operate with empty default values, leading to unauthorized access attempts and … Read more

Automating User‑Policy Assignment in Keycloak 26 Self‑Registration

Summary A development team encountered a critical failure in a self-registration workflow using the Keycloak 26 Java client. While the initial user registration via the API succeeded, users were immediately unable to log in. The investigation revealed that the system required users to be explicitly added to a Client Authorization Policy to grant access. The … Read more

Dynamic pivot of a wide table to map reports to fields in T‑SQL

Summary An engineer attempted to perform schema discovery on a “God Table”—a wide, sparse table containing data from multiple disparate reports. The goal was to transform 100+ sparse columns into a pivoted matrix to visualize which ReportName utilizes which specific data fields. The core challenge was avoiding the manual enumeration of over 100 column names, … Read more

Prevent Argon2 verify crashes by validating password hashes

Summary A production service failed during user authentication due to a TypeError thrown by the argon2 library. The error pchstr must be a non-empty string indicates that the function responsible for verifying a password received an undefined, null, or empty string in place of the stored hash. This is a classic case of data integrity … Read more

Using Multiple MongoTemplate Beans for Multi-DB Routing in Spring

Summary An application designed to manage data across two distinct MongoDB databases (test and test2) failed to route entities to their respective databases. Instead, all operations performed via the injected MongoTemplate were directed to the default database defined in the configuration. This resulted in cross-database pollution, where data intended for test2 was incorrectly persisted into … Read more