On 4/6/20 9:17 PM, David Steele wrote:
Hi Grigory,

Hello!

On 4/5/20 8:02 PM, Grigory Smolkin wrote:
Hello, hackers!

I`m investigating a complains from our clients about archive recovery speed been very slow, and I`ve noticed a really strange and, I think, a very dangerous recovery behavior.

When running multi-timeline archive recovery, for every requested segno startup process iterates through every timeline in restore target timeline history, starting from highest timeline and ending in current, and tries to fetch the segno in question from this timeline.

<snip>

Is there a reason behind this behavior?

Also I`veĀ  attached a patch, which fixed this issue for me, but I`m not sure, that chosen approach is sound and didn`t break something.

This sure looks like [1] which has a completed patch nearly ready to commit. Can you confirm and see if the proposed patch looks good?

Well I`ve been testing it all day and so far nothing is broken.


But this foreach(xlog.c:3777) loop looks very strange to me, it is not robust, we are blindly going over timelines and feeding recovery some files, hoping they are the right ones. I think we can do better, because:
1. we know whether or not we are running multi-timeline recovery
2. we know next timeline ID and can calculate switchpoint segment
3. make an informed decision about from what timeline we must requesting files now.

I will work on it.

--
Grigory Smolkin
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company



Reply via email to