Commit a5b8ef9
committed
[#2160] Fix dispatch starvation when network consumers have full prefetch
Queue.doPageInForDispatch() used pagedInPendingSize < maxPageSize as the
sole gate for paging in messages from the store. When low-priority network
consumers had saturated prefetch (not acking), their undispatched messages
accumulated in dispatchPendingList, counting against maxPageSize and
blocking page-in for all consumers — including higher-priority app
consumers with available prefetch capacity.
Two changes:
1. When pagedInPendingSize >= maxPageSize, cap toPageIn to what consumers
can actually accept (getConsumerMessageCountBeforeFull)
2. Allow page-in when any consumer has available prefetch capacity, even
if pagedInPendingSize >= maxPageSize1 parent f3acdd8 commit a5b8ef9
1 file changed
Lines changed: 9 additions & 3 deletions
Lines changed: 9 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2113 | 2113 | | |
2114 | 2114 | | |
2115 | 2115 | | |
2116 | | - | |
2117 | | - | |
| 2116 | + | |
| 2117 | + | |
| 2118 | + | |
| 2119 | + | |
| 2120 | + | |
| 2121 | + | |
| 2122 | + | |
2118 | 2123 | | |
2119 | 2124 | | |
2120 | 2125 | | |
| |||
2132 | 2137 | | |
2133 | 2138 | | |
2134 | 2139 | | |
2135 | | - | |
| 2140 | + | |
| 2141 | + | |
2136 | 2142 | | |
2137 | 2143 | | |
2138 | 2144 | | |
| |||
0 commit comments