i'm not sure pipelining will help that much. to know what the next dependency set to fetch is, you have to wait for the first one. so you're exploring the graph and each level adds another round-trip
o
orangy
04/03/2018, 9:58 AM
Not really, first pom you get gives you a number of next level poms, which you can pipeline.
m
mikehearn
04/03/2018, 10:18 AM
right. i wonder to what extent aether is thread-bottlenecked. i had a quick rummage to try and figure out how much parallelism it was using but no luck. it looks like it's doing at least some downloads in parallel but the question is, how many
o
orangy
04/03/2018, 10:21 AM
Pipelining is not about parallelism… It’s when you sent N http requests to the same keep-alive connection without waiting for a response, and then receive responses (in the same order). It very much reduces effect of latency.
orangy
04/03/2018, 10:21 AM
Especially for many small files
orangy
04/03/2018, 10:22 AM
Basically, if you resolve POMs one by one as you discover, you pay latency N (number of poms) times, and if you pipeline, it’s only ~ log N (in fact tree depth)
m
mikehearn
04/03/2018, 10:41 AM
yes i know. but if you have 10 files and you know their URLs, you can also open 10 connections and make non pipelined requests.
mikehearn
04/03/2018, 10:41 AM
i'm assuming that's what aether is doing, but i'm not sure.
mikehearn
04/03/2018, 10:42 AM
you're totally right though that it's the lowest hanging fruit for latency optimisations