ERROR: canceling statement due to conflict with recovery
Some old row versions were removed by VACUUM on the primary server, but these row versions could still be required by the query on the standby.  So there is a conflict between the running query and the startup process applying changes that come from the primary.
PostgreSQL waits and delays replay for max_standby_streaming_delay, then cancels the query. So to avoid that problem, set max_standby_streaming_delay to -1 on the standby.
You can read more in my blog.