Update can't see records just committed by another connection
Without knowing more (like the query execution plan, number of rows affected, indexing, etc.) it will be hard to provide a concise answer. But REPEATABLE_READ raises a flag, at least for me. 

Transaction isolation levels are a matter of give-and-take. None of them are "the best"; rather, you choose one that's a "best fit". Each one comes with a cost. If you want high consistency, you get less concurrency.

I like this post:
https://www.percona.com/blog/2012/08/28/differences-between-read-committed-and-repeatable-read-transaction-isolation-levels/

This excerpt from the post sums it up nicely:


  In REPEATABLE READ every lock acquired during a transaction is held
  for the duration of the transaction.
  
  In READ COMMITTED the locks that did not match the scan are released
  after the STATEMENT completes.