The definition of object '[sp_name]' has changed since it was compiled on fail-over to mirror database
Which SQL Edition are you using? Sometimes the engine couldn't refer the metadata catalog resulting in such error. This was identified as a bug. But you've workaround to resolve this issue. If You could recompile the stored procedure the next time it runs using sp_recompile.   

The details of compile and re-compile is discussed below.

Recompile a Stored Procedure

Update Stored Proc in SSMS and executing a separate application which calls the procedure. You need to end the session in which you are editing the procedure. The changes are only visible in the editing session until they are committed.

Check the link below:

The definition of object 'name' has changed since it was compiled