After replacing a failed hard drive (hardware raid 5) I received the following message.
panic: solaris assert: 0 == dmu_buf_hold_array(os, object, offset, size, FALSE, aris/uts/common/fs/zfs/dmu.c, line: 431
How do I recover from this error ?
I notice that you have conspicuously failed to describe your hardware, avoiding such questions as how much memory you have, etc. This is generally a red flag.
But I'm going to take a guess that you have less than the recommended amount of memory, and that your disk replacement corrupted your pool in some unfavorable manner.
Your option, then, is to try to mount the pool for read only, recover whatever data you can off your sinking ship,
then start over - preferably by reading the user guide and not believing that you know better than the developers and everyone else here. You really need 1GB per TB of disk space, minimum, and using a RAID controller is a total fail. Use RAIDZ2 or RAIDZ3.
ZFS does not have tools to repair catastrophic pool damage so usually there's no "recovery."