Query hangs in preparing state and blocks others in waiting for table flush
As @jkavalik wrote you're executing the update with a dependent subquery which effectively runs it 3861 times making it highly ineffective even if the query itself runs fast.

An updated version of the query could be:

UPDATE products
JOIN feeds_processing_data ON 
   (product.source_code = feeds_processing_data.source_code 
    AND ?.processing_id = ?.in_processing_id)
SET products.visible = 1
WHERE merchant_id = in_merchant_id


You didn't attach the table schemas so I just assume this would work. You might need to fully qualify the field names (using tablename.fieldname). Also feeds_processing_data could benefit from a composite index covering the involved fields.