When several threads are running in parallel using pselect function or Parallel macro and when of those threads raise exception
pselect exits (with exception) without waiting for other threads to complete. As a result uncaught exception causes deployment to finish while there are still running threads. Those threads can still report to UI even if no deployment is running from user perspective. Because after deployment local package cache is wiped if such thread accesses its resource file an exception (file not found) is raised and that exception is reported to UI. And if such thread will try to send execution plan that was built earlier it will restart agent listener and it will steal messages from RabbitMQ queues causing subsequent deployments hang
When several threads are running in parallel using pselect function or Parallel macro and when of those threads raise exception
pselect exits (with exception) without waiting for other threads to complete. As a result uncaught exception causes deployment to finish while there are still running threads. Those threads can still report to UI even if no deployment is running from user perspective. Because after deployment local package cache is wiped if such thread accesses its resource file an exception (file not found) is raised and that exception is reported to UI. And if such thread will try to send execution plan that was built earlier it will restart agent listener and it will steal messages from RabbitMQ queues causing subsequent deployments hang