From the supply code of LND, funds are cut up in half and retried if no path for the complete quantity is discovered:
func (p *paymentSession) RequestRoute(maxAmt, feeLimit lnwire.MilliSatoshi,
activeShards, peak uint32) (*route.Route, error) {
...
// That is the place the magic occurs. If we won't discover a
// route, strive it for half the quantity.
maxAmt /= 2
...
For regular funds, I perceive the algorithm will cut up the cost till it matches a path, ship it, and replace the weights within the graph to keep away from reusing the identical path. Then we will do the identical for the remaining quantity. That is confirmed in this reply.
Nonetheless, for MPP, it appears there’s a set of components per spherical, that are despatched concurrently. If so, how does MPP outline the quantities earlier than sending the cost components?
