Gopi Gorantala · Staff engineer · streaming systems since 2011
What broke in production,
why — and how I fixed it.
I build real-time Kafka and Flink platforms for core banking. This site is my engineering logbook: production failures traced to root cause, the architecture lessons behind them, and the resources I'd hand a new engineer on my team.
The library so far
- Java
- 122
- Kafka errors
- 61
- Algorithms
- 77
- Flink errors
- 4
// the whole site, as a topology
Why are you here? Pick one — I'll route you.
producer → topics → consumer (you)
producer
Gopi Gorantala
15+ years of Java. Kafka, Flink & core-banking reconciliation in production.
Start here →
Debug it in minutes, not days.
Search by exception name or config key. Every fix names the side that failed, reproduces it, and shows the before/after change.
Open the error indexStart here →
Trade-offs from real platforms.
Consistency vs availability, throughput vs latency, multi-tenancy, reconciliation — how the decisions played out in financial infrastructure.
Read the field notesStart here →
Patterns, not memorised answers.
LeetCode walkthroughs and data-structure fundamentals, written up as patterns you can carry to the next problem.
Browse algorithmsStart here →
What shaped how I work.
The books behind how I design systems, lead teams and spend my time.
See the reading listStart here →
Learn it in the right order.
When you want a path instead of a fix: structured tracks with prerequisites, built on the same production experience.
Go to javahandbook.com// directory
Everything on this site, in one table.
| Section | What's inside | Come here when… | Find it at |
|---|---|---|---|
| Error index | Every production failure write-up, searchable by exception | You have a stack trace open | /blog/ |
| Kafka errors | Producer, consumer, broker and Kafka Streams failures | Lag, timeouts, rejected records | /tag/kafka-errors/ |
| Flink errors | Checkpoints, savepoints, resources, connectors | A job won't start or keeps restarting | /tag/flink-errors/ |
| Core Java & JVM | Class loading, serialization, concurrency, virtual threads | The JVM itself is the problem | /tag/java-errors/ |
| Spring Boot | Bean wiring, startup and configuration failures | The context won't come up | /tag/spring-boot/ |
| Field notes | Architecture decisions, trade-offs, life & career learnings | You're designing, not debugging | /blog/ |
| Algorithms & DSA | LeetCode walkthroughs, bit manipulation, data structures | Interview prep or fundamentals | /tag/dsa/ |
| Books | The reading list behind the work | You want to go beyond code | /productivity-books/ |
| Courses (external site) | Structured Java and Kafka tracks, Educative courses | You want a learning path | javahandbook.com ↗ |
| About & newsletter | Who I am, and one dissected failure in your inbox | You want to follow along | /about-me/ · /rss/ |
Latest entries in the logbook
tail -f ggorantala.dev/log
- [java] ThreadLocal Goes Missing Inside StructuredTaskScope
- [apache-kafka] RecordTooLargeException: Fixing Kafka's Message Size Limits
- [java] Virtual Thread Pinning: Why synchronized Froze Your App
- [java] Java InvalidClassException: local class incompatible
- [apache-flink] Flink: Could Not Find Any Factory for Identifier 'kafka'
Hi, I'm Gopi.
Staff engineer, 15+ years in Java. I own streaming platforms end to end — Kafka topology, Flink state, CI/CD — and I still ship code. I also lead teams and mentor engineers.
The longer story →