Gunnar Morling's Avatar

Gunnar Morling

@gunnarmorling.dev.bsky.social

Technologist @ Confluent · Ex-lead of Debezium · Spec lead of Bean Validation 2.0 · Creator of JfrUnit, kcctl and MapStruct · Java Champion · morling.dev · 🚴

7,367 Followers  |  203 Following  |  852 Posts  |  Joined: 08.04.2023  |  1.8123

Latest posts by gunnarmorling.dev on Bluesky

Yeah, same in Rust. The executing thread is not blocked, but the execution flow of the async method is. Similar to virtual threads in Java.

06.08.2025 11:40 — 👍 0    🔁 0    💬 1    📌 0

Maybe it's me being dense, but wouldn't Rust's `await` be more aptly named `yield`? With my Java hat on, await makes it sound like this is blocking (like Future::get()), whereas it's exactly not that.

06.08.2025 08:39 — 👍 2    🔁 0    💬 2    📌 0

IMO we need three major axes for talking about open software:

- Open source: anyone can use, modify, redistribute the source code
- Open contribution: anyone can help make it better
- Open governance: anyone can wield power over what happens to it

05.08.2025 15:56 — 👍 9    🔁 2    💬 1    📌 0

I was just re-listening to the Oxide & Friends "Crates We Love" episode where @elizas.website correctly promoted writing "when to use" / "when not to use" docs for your crates!

oxide-and-friends.transistor.fm/episodes/cra...

05.08.2025 20:43 — 👍 27    🔁 3    💬 0    📌 0
Post image

"When not to use Tokio"--Loving this section in the docs of Tokio (tokio.rs/tokio/tutorial), a runtime for building async applications in Rust. There are no silver bullets, and it's vital to understand when a given library or tool adds value, and when it does not.

05.08.2025 20:22 — 👍 28    🔁 3    💬 1    📌 1

Oh, wow, thanks a lot, Phil! So great to hear this stuff is useful to folks 🙏.

05.08.2025 13:41 — 👍 3    🔁 0    💬 0    📌 0
Post image

Gunnar writes really accessible posts on postgres logical replication (from the CDC angle). It only just clicked for me I should go back and read all his posts on the subject since I work on a logical replication product and I could use the primer.

www.morling.dev/blog/postgre...

05.08.2025 13:18 — 👍 19    🔁 2    💬 1    📌 0
Post image

📝 Blogged: "Postgres Replication Slots: Confirmed Flush LSN vs. Restart LSN"

Exploring the difference between these two LSNs of PG replication slots, which is a common source for confusion.

👉 www.morling.dev/blog/postgre...

05.08.2025 12:33 — 👍 7    🔁 1    💬 0    📌 0

Current status: writing a quick side blog post before writing a quick side blog post before getting back to the one I actually intended to write. Let's see how many frames this stack fits 🤓.

04.08.2025 11:44 — 👍 16    🔁 0    💬 1    📌 0

Haha, yeah, indeed. Are you gonna be at JavaZone, btw.?

04.08.2025 08:01 — 👍 0    🔁 0    💬 0    📌 0

I'm really tempted to do something around CDC in Rust. I don't think it's (only) a library problem, though. It needs to be able to scale out to multiple nodes (in particular for snapshots), which moves it into the space of distributed systems rather than libraries, at least beyond a certain scale.

02.08.2025 17:32 — 👍 4    🔁 0    💬 1    📌 0

Yeah, the many changes are definitely holding it back. Maven is much easier to handle in this regard.

02.08.2025 11:30 — 👍 1    🔁 0    💬 1    📌 0

Yepp. Interestingly, I'm seeing less outliers when not using --no-tui, but in either case tail latencies beyond 99.9 seem not trustworthy.

01.08.2025 07:28 — 👍 0    🔁 0    💬 1    📌 0

How would you trigger the load (at a given rate)?

31.07.2025 20:23 — 👍 0    🔁 0    💬 1    📌 0
Hyperfoil Microservice-oriented distributed benchmark framework.

Haha, yeah, I was hoping to avoid doing that :) Probably gonna look into hyperfoil.io now. It's more sophisticated than what I need; I really just want to fire requests at a given rate, reliably, but all the "simple" tools promising to do that have some quirks, unfortunately.

31.07.2025 20:19 — 👍 4    🔁 0    💬 0    📌 0

Yeah, I was running into connection limits, which you can sidestep by using keep-alive or HTTP2 (if that fits the spec for your test). But I'm seeing some random noise with oha, which make tail latencies not very trustworthy.

31.07.2025 20:16 — 👍 0    🔁 0    💬 1    📌 0

Kinda depressed by the state of HTTP load testing tools right now :/
hey: unmaintained, no good reporting of tail latencies.
oha: looked nice, but it seems to create noise on the client side. vegeta: incorrect tail latencies in Histogram output, can't get it to scale beyond 5K qps for some reason.

31.07.2025 19:49 — 👍 6    🔁 0    💬 6    📌 0
Preview
How to create CSV report with results? · Hyperfoil Hyperfoil · Discussion #582 Hey all, I'd like to create a CSV report with the individual request latencies, allowing me to scatter plot latencies over time, similar to what's doable with Hey's CSV output and hey-hdr (see belo...

@stalep.bsky.social, in case you have a moment, posted a question on Hyperfoil here: github.com/Hyperfoil/Hy... 🙏.

29.07.2025 20:36 — 👍 0    🔁 0    💬 2    📌 0

👀

29.07.2025 20:15 — 👍 2    🔁 0    💬 0    📌 0

Question for JFR experts around: is there a tool for extracting parts from a recording file based on timestamps? `jfr disassemble` works based on size / number of chunks, but I'd rather want to be able to say "extract the last 5 minutes", or "extract between 1:30 and 5:00 into the recording", etc.

28.07.2025 15:25 — 👍 0    🔁 0    💬 1    📌 0

LOL, yeah, feeling a bit embarrassed that I fell for it, haha.

26.07.2025 19:39 — 👍 1    🔁 0    💬 0    📌 0

Ha, yeah, turns out it was on the load gen side indeed. It was running out of connections. Using HTTP2 mitigates it (via pipelining), which I got reminded of reading the docs of... Hyperfoil ;) Is the project alive? Saw the last post is from a few years back.

26.07.2025 10:54 — 👍 0    🔁 0    💬 3    📌 0

OS.

25.07.2025 17:58 — 👍 0    🔁 0    💬 0    📌 0

It runs queries against a database. I suspected the connection pool, but the same behavior is exposed when just returning some dummy data from the service itself. Starting to wonder whether it's an artifact of the load generator (oha) and/or running this on macOS. Will try on a Linux box.

25.07.2025 15:18 — 👍 1    🔁 0    💬 1    📌 0

GC and memory look good as per JFR.

25.07.2025 15:17 — 👍 1    🔁 0    💬 0    📌 0

It's just a single process, not running in a container. The pattern occurs always around the same time (20 sec in) after starting the load test.

25.07.2025 14:51 — 👍 1    🔁 0    💬 1    📌 0
Post image

😱 You see this distribution of response times from running 500 requests/sec against some microservice for 120 sec. What do you do to in order to investigate what's going on?

25.07.2025 14:29 — 👍 5    🔁 0    💬 11    📌 0
Preview
GitHub - cwida/FastLanes: Next-Gen Big Data File Format Next-Gen Big Data File Format. Contribute to cwida/FastLanes development by creating an account on GitHub.

New data oriented file format just dropped.

FastLanes, "like Parquet, but with 40% better compression and 40× faster decoding". 👀

Seems it can exploit correlations between columns and have fully SIMD friendly encodings to help with vectorization.

github.com/cwida/FastLa...

24.07.2025 15:12 — 👍 73    🔁 16    💬 3    📌 2

I've been a bit out of the loop on JPA/Hibernate: is there a way nowadays to model a uni-directional OneToMany relationship which doesn't do an update of the join column when inserting both sides of the relationship?

24.07.2025 10:17 — 👍 3    🔁 1    💬 0    📌 0
Preview
Interesting links - July 2025

✍️ Blogged: Interesting Links - July 2025

👉 Lots of Iceberg this month, plus Kafka, Flink, several interesting papers, and 9x examples of data in action at companies including Peloton, Cloudflare, Datadog, and Stifel 📚

rmoff.net/2025/07/18/i...

21.07.2025 10:02 — 👍 6    🔁 1    💬 0    📌 0

@gunnarmorling.dev is following 20 prominent accounts