ByteCode.NewsSubmit
Use quotes for an exact word.

Subscribe

RSSPodcast
Log in

Chat Logs

  1. * firewyre quit (Ping timeout: 260 seconds)
  2. * JazzJackalope5 joined #java
  3. * JazzJackalope quit (Ping timeout: 240 seconds)
  4. * JazzJackalope5 is now known as JazzJackalope
  5. * JazzJackalope quit (Excess Flood)
  6. * JazzJackalope joined #java
  7. * JazzJackalope quit (Ping timeout: 251 seconds)
  8. * JazzJackalope joined #java
  9. * deavmi quit (Read error: Connection reset by peer)
  10. * JazzJackalope7 joined #java
  11. * JazzJackalope quit (Ping timeout: 251 seconds)
  12. * JazzJackalope7 is now known as JazzJackalope
  13. * deavmi joined #java
  14. * JazzJackalope2 joined #java
  15. * JazzJackalope quit (Ping timeout: 271 seconds)
  16. * JazzJackalope2 is now known as JazzJackalope
  17. * JazzJackalope0 joined #java
  18. * JazzJackalope quit (Ping timeout: 268 seconds)
  19. * JazzJackalope0 is now known as JazzJackalope
  20. * JazzJackalope6 joined #java
  21. * JazzJackalope quit (Ping timeout: 242 seconds)
  22. * JazzJackalope6 is now known as JazzJackalope
  23. * JazzJackalope3 joined #java
  24. * JazzJackalope quit (Ping timeout: 249 seconds)
  25. * JazzJackalope3 is now known as JazzJackalope
  26. * JazzJackalope quit (Ping timeout: 265 seconds)
  27. * jreicher quit (Quit: In transit)
  28. * julemand101 quit (Quit: WeeChat 4.10.1)
  29. * julemand101 joined #java
  30. * Ragnor quit (Ping timeout: 252 seconds)
  31. * ChaiTRex quit (Ping timeout: 251 seconds)
  32. * ChaiTRex joined #java
  33. * iusr2 joined #java
  34. * iusr quit (Remote host closed the connection)
  35. * Ragnor joined #java
  36. * ChaiTRex quit (Remote host closed the connection)
  37. * ChaiTRex joined #java
  38. * qbone quit (Quit: The Lounge - https://thelounge.chat)
  39. * jreicher joined #java
  40. * ChaiTRex quit (Remote host closed the connection)
  41. * ChaiTRex joined #java
  42. * kmh quit (Remote host closed the connection)
  43. * kmh joined #java
  44. * qbone joined #java
  45. * APic quit (Ping timeout: 249 seconds)
  46. * APic joined #java
  47. * Bhyve joined #java
  48. * iwtga57 joined #java
  49. * 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)
  50. * fgidim quit (Ping timeout: 249 seconds)
  51. * fgarcia joined #java
  52. * Bhyve quit (Quit: WeeChat 4.10.1)
  53. * fgarcia quit (Ping timeout: 241 seconds)
  54. * fgarcia joined #java
  55. * jwisbell35 quit (Remote host closed the connection)
  56. * jwisbell35 joined #java
  57. * fgarcia is now known as fgidim
  58. * ztevoz joined #java
  59. * yore joined #java
  60. * yore left #java
  61. * marcel112 quit (Quit: The Lounge - https://thelounge.chat)
  62. * jwisbell35 quit (Ping timeout: 275 seconds)
  63. * jwisbell35 joined #java
  64. * MikeBux joined #java
  65. * jreicher is now known as Guest3554
  66. * jreicher joined #java
  67. * Guest3554 quit (Ping timeout: 261 seconds)
  68. * acidsys quit (Ping timeout: 255 seconds)
  69. * acidsys joined #java
  70. * akaWolf quit (Ping timeout: 244 seconds)
  71. * akaWolf joined #java
  72. * pr070cal joined #java
  73. dreamrealhttps://bytecode.news/posts/2026/10/emergent-design-outside-the-codebase
  74. dreamrealIf anyone has a hacker news or lobste.rs account, AND if you think it's worthwhile, would appreciate a posting about it
  75. dreamrealif *I* post it it's self-promotion
  76. dreamrealhttps://bytecode.news/posts/2026/10/the-geometric-model-of-maintenance was posted today as well
  77. * rimbaud joined #java
  78. * llanhmock quit (Quit: leaving)
  79. * jreicher quit (Quit: In transit)
  80. * ramontjunior quit (Quit: ramontjunior)
  81. * ramontjunior joined #java
  82. * JackleVantern joined #java
  83. * MikeBux quit (Quit: Never look down on someone unless you're helping them up.)
  84. * ramontjunior quit (Quit: ramontjunior)
  85. * ramontjunior joined #java
  86. * metalmaniac quit (Read error: Connection reset by peer)
  87. * metalmaniac joined #java
  88. * JackleVantern quit (Ping timeout: 252 seconds)
  89. * flrnd joined #java
  90. * flrnd quit (Remote host closed the connection)
  91. * flrnd joined #java
  92. * JackleVantern joined #java
  93. * jamezp joined #java
  94. * jreicher joined #java
  95. * rimbaud quit (Quit: rimbaud)
  96. * Bhyve joined #java
  97. * MikeBux joined #java
  98. * flrnd quit (Remote host closed the connection)
  99. * henbruas quit (Read error: Connection reset by peer)
  100. * henbruas joined #java
  101. * vitaliy quit (Remote host closed the connection)
  102. * vitaliy joined #java
  103. * hwpplayer1 joined #java
  104. * gareppa joined #java
  105. * gareppa quit (Quit: WeeChat 4.8.1)
  106. * yano quit (Quit: WeeChat, https://weechat.org/)
  107. * yano joined #java
  108. * acidjnk joined #java
  109. Chronosdreamreal: Two thumbs up for the emergent design article
  110. dreamrealgrazi
  111. cheeservictor?
  112. dreamrealpfft
  113. * iusr2 quit (Ping timeout: 268 seconds)
  114. * ChaiTRex quit (Ping timeout: 266 seconds)
  115. * iusr joined #java
  116. * ChaiTRex joined #java
  117. * jwisbell35 quit (Remote host closed the connection)
  118. * iusr quit (Remote host closed the connection)
  119. * iusr joined #java
  120. * iusr quit (Remote host closed the connection)
  121. * iusr joined #java
  122. * Chai-T-Rex joined #java
  123. * ChaiTRex quit (Remote host closed the connection)
  124. * mixfix41 joined #java
  125. * Bhyve quit (Quit: WeeChat 4.10.1)
  126. * fgidim quit (Read error: Connection reset by peer)
  127. * fgarcia joined #java
  128. * mindCrime joined #java
  129. * avu quit (Quit: reboot)
  130. * avu joined #java
  131. * fgarcia is now known as fgidim
  132. * canton7 quit (Quit: ZNC - http://znc.in)
  133. * canton7 joined #java
  134. * magla joined #java
  135. * nevet joined #java
  136. * 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.
  137. * iusr quit (Remote host closed the connection)
  138. * Chai-T-Rex quit (Remote host closed the connection)
  139. * ChaiTRex joined #java
  140. * iusr joined #java
  141. * penthief joined #java
  142. * EthanHunt joined #java
  143. * iusr quit (Remote host closed the connection)
  144. * iusr joined #java
  145. * JysRackethon joined #java
  146. * tomboy64 quit (Ping timeout: 247 seconds)
  147. * tomboy64 joined #java
  148. * penthief left #java (ERC 5.6.0.30.1 (IRC client for GNU Emacs 30.2))
  149. * penthief joined #java
  150. * penthief left #java (ERC 5.6.0.30.1 (IRC client for GNU Emacs 30.2))
  151. * penthief joined #java
  152. * JysRackethon quit (Ping timeout: 241 seconds)
  153. * magla quit (Quit: Stay safe!)
  154. * iusr quit (Remote host closed the connection)
  155. * iusr joined #java
  156. * hwpplayer1 quit (Quit: sleep)
  157. * ptomli90 joined #java
  158. * ptomli9 quit (Ping timeout: 245 seconds)
  159. * ptomli90 is now known as ptomli9
  160. * mrfb joined #java
  161. 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
  162. * dgregory joined #java
  163. julemand101mrfb: So your issue are no longer that you could not see nanoseconds added to the OffsetDateTime object?
  164. * mrfb quit (Remote host closed the connection)
  165. * mrfb joined #java
  166. 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
  167. 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.
  168. mrfbjulemand101++
  169. nevetjulemand101 now has karma of 3.
  170. julemand101mrfb: Could be your CI are running on a platform that does not allow nano-second precesion?
  171. mrfbthats an interesting question worth investigating
  172. * mindCrime quit (Ping timeout: 247 seconds)
  173. * EthanHunt quit (Quit: Connection closed for inactivity)
  174. 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
  175. mrfbYeah, I went the rabbit hole and was looking into it, following VM.getNanoTimeAdjustment()
  176. 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)
  177. ernimrilso the timing was better than seconds, but not by much
  178. mrfbMe neither, I only use windows when I need to run tests or similar cases. Makes sense and seems things didnt improve much
  179. 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
  180. 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
  181. ernimrilso we got time like: x, x, x, x, y (= x + 200), y, y, y, y, z (= y + 300) ....
  182. * MikeBux quit (Quit: Never look down on someone unless you're helping them up.)
  183. 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.
  184. mrfbGood news, I think I can rule out Java as the culprit and focus on Windows clock resolution instead.
  185. ernimrilmight be a good time to ask your infrastructure guy if they can improve the vm time resolution
  186. mrfbwhile not wrong, I think the test should not depend on clock resolution
  187. * ztevoz quit (Quit: ztevoz)
  188. * EthanHunt joined #java
  189. * iwtga57 quit (Quit: The Lounge - https://thelounge.chat)
  190. * iwtga57 joined #java
  191. * acidjnk quit (Ping timeout: 244 seconds)
  192. * iwtga574 joined #java
  193. * fdp quit (Killed (zinc.libera.chat (Nickname regained by services)))
  194. * fdp joined #java
  195. * iwtga57 quit (Ping timeout: 250 seconds)
  196. * iwtga574 is now known as iwtga57
  197. 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
  198. * monkeyPlus joined #java
  199. * monkeyPlus quit (Client Quit)
  200. mrfband by the way, thanks for the pointers again
  201. * mrfb quit (Remote host closed the connection)
  202. * JackleVantern quit (Ping timeout: 264 seconds)
  203. * JackleVantern joined #java
  204. * jamezp quit (Quit: Leaving)
  205. * vincere3 joined #java
  206. * vincere quit (Read error: Connection reset by peer)
  207. * vincere3 is now known as vincere
  208. * wontzer joined #java
  209. * kmh quit (Quit: Leaving)
  210. * EthanHunt quit (Quit: Connection closed for inactivity)
  211. * pr070cal quit (Quit: Connection closed for inactivity)
  212. * kmh joined #java
  213. * metalmaniac quit (Ping timeout: 248 seconds)
  214. * metalmaniac joined #java
  215. NeXeNi didn't notice if you thought to try but maybe use a mock clock?
  216. 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
  217. 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
  218. 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
  219. 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
  220. NeXeNi mean you can do vector clocks and idempotency keys, but i prefer sequences
  221. NeXeNmostly because it's simple
  222. NeXeNntp will be easy, but ptp is i think time right at your nic
  223. NeXeNe.g. without the stack latency
  224. 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
  225. 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"
  226. 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
  227. NeXeNEvent messages: Time-critical messages with an accurate timestamp that is generated at both the transmit time and receive time. <----from the spec
  228. NeXeNlike was said earlier, speak to sysadmin :P
  229. NeXeNoh i see what you said about the go client. yeah if you inject a clock that's a winner
  230. * Betal quit (Ping timeout: 250 seconds)
  231. * blacknova joined #java
  232. * Betal joined #java