clojure-europe

For people in Europe... or elsewhere... UGT https://indieweb.org/Universal_Greeting_Time
dharrigan 2020-11-19T07:20:58.467900Z

Good Morning!

dominicm 2020-11-19T07:24:04.468100Z

Morning

javahippie 2020-11-19T07:56:19.468300Z

✌️

ordnungswidrig 2020-11-19T08:39:27.468900Z

Good moriningnging!

thomas 2020-11-19T09:16:29.469100Z

moin moin

jasonbell 2020-11-19T10:17:45.469300Z

Hello Cleveland!

2020-11-19T10:49:02.469500Z

morning

2020-11-19T10:51:14.470200Z

@borkdude that transit flush issue is interesting. I'm sidestepping it by having a small number or large objects I'm writing so I'm dodging that issue

2020-11-19T10:51:43.470600Z

I suppose the question is "what disk format should I be using?"

2020-11-19T10:51:58.470900Z

I wasn't happy with nippy or csv

2020-11-19T10:52:29.471800Z

If csv works as a format I could go for arrow and http://tech.ml.dataset, but it would be weird to then drop the dataset aspects of it

borkdude 2020-11-19T10:52:35.472Z

@otfrom I'm side-stepping it by first writing into an in-memory bytearray

2020-11-19T10:53:02.472400Z

at least your solution is on purpose rather than by accident like mine 🙂

ordnungswidrig 2020-11-19T13:06:16.473700Z

Can you migitate it by wrapping the actual writer in a buffering writer?

2020-11-19T13:13:45.475Z

@ordnungswidrig I'm not currently having a problem with it, but I seem to be hitting the sweet spot of only writing a few big objects to a file

borkdude 2020-11-19T13:15:13.475400Z

I'm using this in clj-kondo where the files I'm writing aren't that big, so all in memory is fine

dominicm 2020-11-19T14:25:05.476300Z

@ordnungswidrig nope. Buffering output streams follow flushing rules too.

ordnungswidrig 2020-11-19T14:35:53.477100Z

That would rewuire a custom stream that reconciles the flashes?

dominicm 2020-11-19T18:04:47.477200Z

@ordnungswidrig Yep. I tried to write one, it's very difficult because you need to sometimes flush in order to actually stream things to the browser to reduce overall latency (otherwise you're basically just doing a ByteArrayOutputStream).

ordnungswidrig 2020-11-19T18:07:18.478500Z

it’s an interesting question and I think the “flush management” must be a separate concern than the wire encoding. Acutally you need to combination of time and size based decision. But honestly I do not understand how this can have an impact on chunking, which is a transport encoding.

dominicm 2020-11-19T18:22:57.478900Z

@ordnungswidrig Well, when you flush, that causes a cascade of flushes which means the gzipoutputstream just flushes out the chunk it has right now, which the http chunking output stream then delivers.

dominicm 2020-11-19T18:23:06.479Z

Transit shouldn't be calling flush, period.

👍 1