This Knowledgebase article provides details about the occurrence of the error message below:
DRIVER ERROR: Driver.allocBuffer failed: Not enough storage is available to process this command.
When the user attempts to switchover, the switchover fails. There is an error message as follows:
Error Message: [ Exception in Controller:Operation switch over failed during Passive side switch(PassiveSwitchFailedException) because Could not start (ControlException) because Error starting Interceptor (ControlException) because DRIVER ERROR: Driver.allocBuffer failed: Not enough storage is available to process this command.
:[0X8] (GenericDriverException) ]
When Heartbeat starts replication as active, the file interceptor driver allocates a configurable size buffer, (of default size 256MB), from virtual memory in the process address space of the Heartbeat service process. This allocation fails resulting in the error message and the failure of the switchover.
The allocation can fail for two reasons:
- The process address space can be depleted such that 256MB of process address space is not available.
- The process address space can be fragmented such that 256MB of contiguous process address is not available.
The automatic switchover must be replaced with a manual switchover.
- Stop replication choosing to 'Stop Applications'.
- Shutdown Neverfail Heartbeat.
- Use 'Server Configuration' wizard to switch the role on both servers.
- Restart Neverfail Heartbeat on both servers.
The remedy in this case is based on the assumption that the most probable cause of the allocation failure is process address space fragmentation as opposed to process address space depletion.
This is a work around because all it does is to make the buffer allocation more resilient against fragmentation, and to a lesser extent, depletion of the process address space of the Heartbeat process. The change does not address the root cause.
Versions starting with 5.0.3 contain this fix.
Neverfail Heartbeat versions prior to 5.0.3