So, after reading the thread which Eric posted earlier, I have created a workaround for the issue. In my backup script, I add a swapfile with swapon, tell cassandra to create the snapshots, then remove the swapfile with swapoff. Then I continue with the rest of the work the backup script needs to do in gathering up the snapshots into a tarball and pushing it to S3.
Lee Parker On Tue, Apr 27, 2010 at 9:01 PM, Lee Parker <l...@socialagency.com> wrote: > The system is a ubuntu server running 8.04 LTS. Now, I'm getting the > problem again this evening even with the addition of the swap space. > > Lee Parker > On Tue, Apr 27, 2010 at 1:13 PM, Jonathan Shook <jsh...@gmail.com> wrote: > >> The allocation of memory may have failed depending on the available >> virtual memory, whether or not the memory would have been subsequently >> accessed by the process. Some systems do the work of allocating physical >> pages only when they are accessed for the first time. I'm not sure if yours >> is one of them. >> >> >> On Tue, Apr 27, 2010 at 10:45 AM, Lee Parker <l...@socialagency.com>wrote: >> >>> Adding a swapfile fixed the error, but it doesn't look as though the >>> process is even using the swap file at all. >>> >>> Lee Parker >>> On Tue, Apr 27, 2010 at 9:49 AM, Eric Hauser <ewhau...@gmail.com> wrote: >>> >>>> Have you read this? >>>> >>>> http://forums.sun.com/thread.jspa?messageID=9734530 >>>> >>>> <http://forums.sun.com/thread.jspa?messageID=9734530>I don't think EC2 >>>> instances have any swap. >>>> >>>> >>>> >>>> On Tue, Apr 27, 2010 at 10:16 AM, Lee Parker <l...@socialagency.com>wrote: >>>> >>>>> Can anyone help with this? It is preventing me from getting backups of >>>>> our cluster. >>>>> >>>>> Lee Parker >>>>> On Mon, Apr 26, 2010 at 10:02 PM, Lee Parker <l...@socialagency.com>wrote: >>>>> >>>>>> I was attempting to get a snapshot on our cassandra nodes. I get the >>>>>> following error every time I run nodetool ... snapshot. >>>>>> >>>>>> Exception in thread "main" java.io.IOException: Cannot run program >>>>>> "ln": java.io.IOException: error=12, Cannot allocate memory >>>>>> at java.lang.ProcessBuilder.start(ProcessBuilder.java:459) >>>>>> at >>>>>> org.apache.cassandra.io.util.FileUtils.createHardLink(FileUtils.java:221) >>>>>> at >>>>>> org.apache.cassandra.db.ColumnFamilyStore.snapshot(ColumnFamilyStore.java:1060) >>>>>> at org.apache.cassandra.db.Table.snapshot(Table.java:256) >>>>>> at >>>>>> org.apache.cassandra.service.StorageService.takeAllSnapshot(StorageService.java:1005) >>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>>>>> at >>>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) >>>>>> at >>>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) >>>>>> at java.lang.reflect.Method.invoke(Method.java:597) >>>>>> at >>>>>> com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:93) >>>>>> at >>>>>> com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:27) >>>>>> at >>>>>> com.sun.jmx.mbeanserver.MBeanIntrospector.invokeM(MBeanIntrospector.java:208) >>>>>> at >>>>>> com.sun.jmx.mbeanserver.PerInterface.invoke(PerInterface.java:120) >>>>>> at com.sun.jmx.mbeanserver.MBeanSupport.invoke(MBeanSupport.java:262) >>>>>> at >>>>>> com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836) >>>>>> at >>>>>> com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761) >>>>>> at >>>>>> javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1426) >>>>>> at >>>>>> javax.management.remote.rmi.RMIConnectionImpl.access$200(RMIConnectionImpl.java:72) >>>>>> at >>>>>> javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1264) >>>>>> at >>>>>> javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1359) >>>>>> at >>>>>> javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:788) >>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>>>>> at >>>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) >>>>>> at >>>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) >>>>>> at java.lang.reflect.Method.invoke(Method.java:597) >>>>>> at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305) >>>>>> at sun.rmi.transport.Transport$1.run(Transport.java:159) >>>>>> at java.security.AccessController.doPrivileged(Native Method) >>>>>> at sun.rmi.transport.Transport.serviceCall(Transport.java:155) >>>>>> at >>>>>> sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535) >>>>>> at >>>>>> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790) >>>>>> at >>>>>> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649) >>>>>> at >>>>>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) >>>>>> at >>>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) >>>>>> at java.lang.Thread.run(Thread.java:619) >>>>>> Caused by: java.io.IOException: java.io.IOException: error=12, Cannot >>>>>> allocate memory >>>>>> at java.lang.UNIXProcess.<init>(UNIXProcess.java:148) >>>>>> at java.lang.ProcessImpl.start(ProcessImpl.java:65) >>>>>> at java.lang.ProcessBuilder.start(ProcessBuilder.java:452) >>>>>> ... 34 more >>>>>> >>>>>> The nodes are both Amazon EC2 Large instances with 7.5G RAM (6 >>>>>> allocated for Java heap) with two cores and only 70G of data in >>>>>> casssandra. >>>>>> They have plenty of available RAM and HD space. Has anyone else run >>>>>> into >>>>>> this error? >>>>>> >>>>>> Lee Parker >>>>>> >>>>> >>>>> >>>> >>> >> >