Community
Chat Logs
Friday, October 16, 2026 (America/New_York)
- * firewyre quit (Ping timeout: 260 seconds)
- * JazzJackalope5 joined #java
- * JazzJackalope quit (Ping timeout: 240 seconds)
- * JazzJackalope5 is now known as JazzJackalope
- * JazzJackalope quit (Excess Flood)
- * JazzJackalope joined #java
- * JazzJackalope quit (Ping timeout: 251 seconds)
- * JazzJackalope joined #java
- * deavmi quit (Read error: Connection reset by peer)
- * JazzJackalope7 joined #java
- * JazzJackalope quit (Ping timeout: 251 seconds)
- * JazzJackalope7 is now known as JazzJackalope
- * deavmi joined #java
- * JazzJackalope2 joined #java
- * JazzJackalope quit (Ping timeout: 271 seconds)
- * JazzJackalope2 is now known as JazzJackalope
- * JazzJackalope0 joined #java
- * JazzJackalope quit (Ping timeout: 268 seconds)
- * JazzJackalope0 is now known as JazzJackalope
- * JazzJackalope6 joined #java
- * JazzJackalope quit (Ping timeout: 242 seconds)
- * JazzJackalope6 is now known as JazzJackalope
- * JazzJackalope3 joined #java
- * JazzJackalope quit (Ping timeout: 249 seconds)
- * JazzJackalope3 is now known as JazzJackalope
- * JazzJackalope quit (Ping timeout: 265 seconds)
- * jreicher quit (Quit: In transit)
- * julemand101 quit (Quit: WeeChat 4.10.1)
- * julemand101 joined #java
- * Ragnor quit (Ping timeout: 252 seconds)
- * ChaiTRex quit (Ping timeout: 251 seconds)
- * ChaiTRex joined #java
- * iusr2 joined #java
- * iusr quit (Remote host closed the connection)
- * Ragnor joined #java
- * ChaiTRex quit (Remote host closed the connection)
- * ChaiTRex joined #java
- * qbone quit (Quit: The Lounge - https://thelounge.chat)
- * jreicher joined #java
- * ChaiTRex quit (Remote host closed the connection)
- * ChaiTRex joined #java
- * kmh quit (Remote host closed the connection)
- * kmh joined #java
- * qbone joined #java
- * APic quit (Ping timeout: 249 seconds)
- * APic joined #java
- * Bhyve joined #java
- * iwtga57 joined #java
- * troydm quit (Quit: What is Hope? That all of your wishes and all of your dreams come true? To turn back time because things were not supposed to happen like that (C) Rau Le Creuset)
- * fgidim quit (Ping timeout: 249 seconds)
- * fgarcia joined #java
- * Bhyve quit (Quit: WeeChat 4.10.1)
- * fgarcia quit (Ping timeout: 241 seconds)
- * fgarcia joined #java
- * jwisbell35 quit (Remote host closed the connection)
- * jwisbell35 joined #java
- * fgarcia is now known as fgidim
- * ztevoz joined #java
- * yore joined #java
- * yore left #java
- * marcel112 quit (Quit: The Lounge - https://thelounge.chat)
- * jwisbell35 quit (Ping timeout: 275 seconds)
- * jwisbell35 joined #java
- * MikeBux joined #java
- * jreicher is now known as Guest3554
- * jreicher joined #java
- * Guest3554 quit (Ping timeout: 261 seconds)
- * acidsys quit (Ping timeout: 255 seconds)
- * acidsys joined #java
- * akaWolf quit (Ping timeout: 244 seconds)
- * akaWolf joined #java
- * pr070cal joined #java
- dreamrealhttps://bytecode.news/posts/2026/10/emergent-design-outside-the-codebase
- dreamrealIf anyone has a hacker news or lobste.rs account, AND if you think it's worthwhile, would appreciate a posting about it
- dreamrealif *I* post it it's self-promotion
- dreamrealhttps://bytecode.news/posts/2026/10/the-geometric-model-of-maintenance was posted today as well
- * rimbaud joined #java
- * llanhmock quit (Quit: leaving)
- * jreicher quit (Quit: In transit)
- * ramontjunior quit (Quit: ramontjunior)
- * ramontjunior joined #java
- * JackleVantern joined #java
- * MikeBux quit (Quit: Never look down on someone unless you're helping them up.)
- * ramontjunior quit (Quit: ramontjunior)
- * ramontjunior joined #java
- * metalmaniac quit (Read error: Connection reset by peer)
- * metalmaniac joined #java
- * JackleVantern quit (Ping timeout: 252 seconds)
- * flrnd joined #java
- * flrnd quit (Remote host closed the connection)
- * flrnd joined #java
- * JackleVantern joined #java
- * jamezp joined #java
- * jreicher joined #java
- * rimbaud quit (Quit: rimbaud)
- * Bhyve joined #java
- * MikeBux joined #java
- * flrnd quit (Remote host closed the connection)
- * henbruas quit (Read error: Connection reset by peer)
- * henbruas joined #java
- * vitaliy quit (Remote host closed the connection)
- * vitaliy joined #java
- * hwpplayer1 joined #java
- * gareppa joined #java
- * gareppa quit (Quit: WeeChat 4.8.1)
- * yano quit (Quit: WeeChat, https://weechat.org/)
- * yano joined #java
- * acidjnk joined #java
- Chronosdreamreal: Two thumbs up for the emergent design article
- dreamrealgrazi
- cheeservictor?
- dreamrealpfft
- * iusr2 quit (Ping timeout: 268 seconds)
- * ChaiTRex quit (Ping timeout: 266 seconds)
- * iusr joined #java
- * ChaiTRex joined #java
- * jwisbell35 quit (Remote host closed the connection)
- * iusr quit (Remote host closed the connection)
- * iusr joined #java
- * iusr quit (Remote host closed the connection)
- * iusr joined #java
- * Chai-T-Rex joined #java
- * ChaiTRex quit (Remote host closed the connection)
- * mixfix41 joined #java
- * Bhyve quit (Quit: WeeChat 4.10.1)
- * fgidim quit (Read error: Connection reset by peer)
- * fgarcia joined #java
- * mindCrime joined #java
- * avu quit (Quit: reboot)
- * avu joined #java
- * fgarcia is now known as fgidim
- * canton7 quit (Quit: ZNC - http://znc.in)
- * canton7 joined #java
- * magla joined #java
- * nevet joined #java
- * CodeGeek!~codegeek@about/java/CodeGeek changed the topic to: Welcome! || Read Channel Rules at https://javachannel.org/ before participating. || Paste limit is two lines; ~pastebin lists options. || No applets, please. || Minecraft, Android, and Javascript all have their own channel. || You are being logged.
- * iusr quit (Remote host closed the connection)
- * Chai-T-Rex quit (Remote host closed the connection)
- * ChaiTRex joined #java
- * iusr joined #java
- * penthief joined #java
- * EthanHunt joined #java
- * iusr quit (Remote host closed the connection)
- * iusr joined #java
- * JysRackethon joined #java
- * tomboy64 quit (Ping timeout: 247 seconds)
- * tomboy64 joined #java
- * penthief left #java (ERC 5.6.0.30.1 (IRC client for GNU Emacs 30.2))
- * penthief joined #java
- * penthief left #java (ERC 5.6.0.30.1 (IRC client for GNU Emacs 30.2))
- * penthief joined #java
- * JysRackethon quit (Ping timeout: 241 seconds)
- * magla quit (Quit: Stay safe!)
- * iusr quit (Remote host closed the connection)
- * iusr joined #java
- * hwpplayer1 quit (Quit: sleep)
- * ptomli90 joined #java
- * ptomli9 quit (Ping timeout: 245 seconds)
- * ptomli90 is now known as ptomli9
- * mrfb joined #java
- mrfbAnyone know where I can find details on how Java gets system time on Windows, specifically for OffsetDateTime.now(), besides reading the JDK source? I'm investigating a clock resolution issue and wondering how much depends on the JDK vs Windows itself
- * dgregory joined #java
- julemand101mrfb: So your issue are no longer that you could not see nanoseconds added to the OffsetDateTime object?
- * mrfb quit (Remote host closed the connection)
- * mrfb joined #java
- mrfbjulemand101: Right, the nanoseconds are added correctly, and increasing the increment to 1 ms addressed the initial failures. But you were right in your review comment about EventAggregator using its own clock. That issue doesn't reproduce on my Windows VM, only in CI. I managed to reproduce the exact failure locally on Linux by truncating OffsetDateTime.now() to seconds. Now I'm trying to understand
- mrfbhow Java gets the system time on Windows. I suspect there might be some Windows API weirdness involved, especially since I can't reproduce it on my VM but it fails intermittently in CI.
- mrfbjulemand101++
- nevetjulemand101 now has karma of 3.
- julemand101mrfb: Could be your CI are running on a platform that does not allow nano-second precesion?
- mrfbthats an interesting question worth investigating
- * mindCrime quit (Ping timeout: 247 seconds)
- * EthanHunt quit (Quit: Connection closed for inactivity)
- julemand101mrfb: But to answer your question, it is done by the following on Windows in Java 21: https://github.com/openjdk/jdk21/blob/master/src/hotspot/os/windows/os_windows.cpp#1079-1086
- mrfbYeah, I went the rabbit hole and was looking into it, following VM.getNanoTimeAdjustment()
- ernimrilmrfb, I remember seeing java on windows having bad time resolution (a few hundred millis) on some virtual machines, but that was several years ago, I have not checked if that is still the case (I typically do not run windows)
- ernimrilso the timing was better than seconds, but not by much
- mrfbMe neither, I only use windows when I need to run tests or similar cases. Makes sense and seems things didnt improve much
- mrfbThe OpenJDK implementation looks reasonable: it reads the Windows system time and converts the FILETIME value into seconds and nanoseconds, But the conversion doesn't guarantee the underlying clock provides that resolution. so the JVM maybe represents the timestamps with nanoseconds while the windows API return the same value across several consecutive calls
- ernimrilthat is what we did see, asking for time in a loop and it jumped like every few hundred millis, showing no difference in between
- ernimrilso we got time like: x, x, x, x, y (= x + 200), y, y, y, y, z (= y + 300) ....
- * MikeBux quit (Quit: Never look down on someone unless you're helping them up.)
- mrfbThat's exactly the behaviour I suspect we're seeing in CI. I've traced OpenJDK down to GetSystemTimeAsFileTime(), so the clock resolution on those Windows VMs might explain it.
- mrfbGood news, I think I can rule out Java as the culprit and focus on Windows clock resolution instead.
- ernimrilmight be a good time to ask your infrastructure guy if they can improve the vm time resolution
- mrfbwhile not wrong, I think the test should not depend on clock resolution
- * ztevoz quit (Quit: ztevoz)
- * EthanHunt joined #java
- * iwtga57 quit (Quit: The Lounge - https://thelounge.chat)
- * iwtga57 joined #java
- * acidjnk quit (Ping timeout: 244 seconds)
- * iwtga574 joined #java
- * fdp quit (Killed (zinc.libera.chat (Nickname regained by services)))
- * fdp joined #java
- * iwtga57 quit (Ping timeout: 250 seconds)
- * iwtga574 is now known as iwtga57
- mrfbJust a curious observation, the go client pass a clock that advances time deterministically, the Java implementation while is almost on par, uses the OffsetDateTime.now() mention before. The test follow also the go implementation assuming both timestamps wont be similar but thats not true thanks to windows clock resolution
- * monkeyPlus joined #java
- * monkeyPlus quit (Client Quit)
- mrfband by the way, thanks for the pointers again
- * mrfb quit (Remote host closed the connection)
- * JackleVantern quit (Ping timeout: 264 seconds)
- * JackleVantern joined #java
- * jamezp quit (Quit: Leaving)
- * vincere3 joined #java
- * vincere quit (Read error: Connection reset by peer)
- * vincere3 is now known as vincere
- * wontzer joined #java
- * kmh quit (Quit: Leaving)
- * EthanHunt quit (Quit: Connection closed for inactivity)
- * pr070cal quit (Quit: Connection closed for inactivity)
- * kmh joined #java
- * metalmaniac quit (Ping timeout: 248 seconds)
- * metalmaniac joined #java
- NeXeNi didn't notice if you thought to try but maybe use a mock clock?
- NeXeNi mean if you're not testing for the precision of the os or something obviously, but you could just mock it so that you'll reliably test the conditions you want to know are supposed to be happening
- NeXeNone thing about a mock clock you gotta be careful of tho, is that you're only testing what "should" happen in a perfect environment. you still have the underlying imprecision and timing issues
- NeXeNi always bypass precision issues with iterated increments, so that you can always add a distinguishing mark to the timestamp so no two can be the same
- NeXeNbut if you're getting a stream from a device that has a really accurate clock (i've encountered this with a dsp plugin) and you have something with less than stellar, then you have to find how to mash it. if the monotonic won't work for your app, wall clock is never going to be any better period
- NeXeNi mean you can do vector clocks and idempotency keys, but i prefer sequences
- NeXeNmostly because it's simple
- NeXeNntp will be easy, but ptp is i think time right at your nic
- NeXeNe.g. without the stack latency
- NeXeNhttps://techdocs.broadcom.com/us/en/storage-and-ethernet-connectivity/ethernet-nic-controllers/bcm957xxx/adapters/Configuration-adapter/precision-time-protocol/ptp-specification.html and https://docs.kernel.org/networking/timestamping.html look good but i'm going to be honest. i am running on caffiene fumes
- nevethttps://techdocs.broadcom.com/us/en/storage-and-ethernet-connectivity/ethernet-nic-controllers/bcm957xxx/adapters/Configuration-adapter/precision-time-protocol/ptp-specification.html "PTP Specification" || https://docs.kernel.org/networking/timestamping.html "Timestamping — The Linux Kernel documentation"
- NeXeNSO_TIMESTAMP Generates a timestamp for each incoming packet in (not necessarily monotonic) system time. Reports the timestamp via recvmsg() in a control message in usec resolution. <--- yeah in the kernel docs it says you can get it for the incoming packet
- NeXeNEvent messages: Time-critical messages with an accurate timestamp that is generated at both the transmit time and receive time. <----from the spec
- NeXeNlike was said earlier, speak to sysadmin :P
- NeXeNoh i see what you said about the go client. yeah if you inject a clock that's a winner
- * Betal quit (Ping timeout: 250 seconds)
- * blacknova joined #java
- * Betal joined #java