CASSANDRA-4230 is a bug in 1.1

I am not aware of issues using snapshot on 1.0.9. But errno 0 is a bit odd. 

On the server side there should be a log message at ERROR level that contains 
the string "Unable to create hard link" and the error message. What does that 
say ? 

Can you also include the OS version. 

Cheers

-----------------
Aaron Morton
Freelance Developer
@aaronmorton
http://www.thelastpickle.com

On 28/05/2012, at 9:27 PM, Alain RODRIGUEZ wrote:

> I have the same error with the last Datastax AMI (1.0.9). Is that the same 
> bug ?
> 
> Requested snapshot for: cassa_teads
> Exception in thread "main" java.io.IOError: java.io.IOException:
> Unable to create hard link from
> /raid0/cassandra/data/cassa_teads/stats_product-hc-233-Index.db to
> /raid0/cassandra/data/cassa_teads/snapshots/20120528/stats_product-hc-233-Index.db
> (errno 0)
>        at 
> org.apache.cassandra.db.ColumnFamilyStore.snapshotWithoutFlush(ColumnFamilyStore.java:1433)
>        at 
> org.apache.cassandra.db.ColumnFamilyStore.snapshot(ColumnFamilyStore.java:1462)
>        at org.apache.cassandra.db.Table.snapshot(Table.java:210)
>        at 
> org.apache.cassandra.service.StorageService.takeSnapshot(StorageService.java:1710)
>        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:1427)
>        at 
> javax.management.remote.rmi.RMIConnectionImpl.access$200(RMIConnectionImpl.java:72)
>        at 
> javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1265)
>        at 
> javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1360)
>        at 
> javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:788)
>        at sun.reflect.GeneratedMethodAccessor50.invoke(Unknown Source)
>        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:303)
>        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:662)
> Caused by: java.io.IOException: Unable to create hard link from
> /raid0/cassandra/data/cassa_teads/stats_product-hc-233-Index.db to
> /raid0/cassandra/data/cassa_teads/snapshots/20120528/stats_product-hc-233-Index.db
> (errno 0)
>        at 
> org.apache.cassandra.utils.CLibrary.createHardLink(CLibrary.java:158)
>        at 
> org.apache.cassandra.io.sstable.SSTableReader.createLinks(SSTableReader.java:857)
>        at 
> org.apache.cassandra.db.ColumnFamilyStore.snapshotWithoutFlush(ColumnFamilyStore.java:1412)
>        ... 32 more
> 
> Can we do a snapshot manually (like flushing and after copying all the
> file into the snapshot folder) ?
> 
> Alain
> 
> 2012/5/19 Jonathan Ellis <jbel...@gmail.com>:
>> When these bugs are fixed:
>> https://issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&jqlQuery=project+%3D+CASSANDRA+AND+fixVersion+%3D+%221.1.1%22+AND+resolution+%3D+Unresolved+ORDER+BY+due+ASC%2C+priority+DESC%2C+created+ASC&mode=hide
>> 
>> On Wed, May 16, 2012 at 6:35 PM, Bryan Fernandez <bfernande...@gmail.com> 
>> wrote:
>>> Does anyone know when 1.1.1 will be released?
>>> 
>>> Thanks.
>>> 
>>> On Tue, May 15, 2012 at 5:40 PM, Brandon Williams <dri...@gmail.com> wrote:
>>>> 
>>>> Probably https://issues.apache.org/jira/browse/CASSANDRA-4230
>>>> 
>>>> On Tue, May 15, 2012 at 4:08 PM, Bryan Fernandez <bfernande...@gmail.com>
>>>> wrote:
>>>>> Greetings,
>>>>> 
>>>>> We recently upgraded from 1.0.8 to 1.1.0. Everything has been running
>>>>> fine
>>>>> with the exception of snapshots. When attempting to snapshot any of the
>>>>> nodes in our six node cluster we are seeing the following error.
>>>>> 
>>>>> [root@cassandra-n6 blotter]# /opt/apache-cassandra-1.1.0/bin/nodetool -h
>>>>> 10.20.50.58 snapshot
>>>>> Requested snapshot for: all keyspaces
>>>>> Exception in thread "main" java.io.IOError: java.io.IOException: Unable
>>>>> to
>>>>> create hard link from
>>>>> /var/lib/cassandra/data/blotter/twitter_users/twitter_users.json to
>>>>> 
>>>>> /var/lib/cassandra/data/blotter/twitter_users/snapshots/1337115022389/twitter_users.json
>>>>> (errno 17)
>>>>> at
>>>>> 
>>>>> org.apache.cassandra.db.ColumnFamilyStore.snapshotWithoutFlush(ColumnFamilyStore.java:1454)
>>>>> at
>>>>> 
>>>>> org.apache.cassandra.db.ColumnFamilyStore.snapshot(ColumnFamilyStore.java:1483)
>>>>> at org.apache.cassandra.db.Table.snapshot(Table.java:205)
>>>>> at
>>>>> 
>>>>> org.apache.cassandra.service.StorageService.takeSnapshot(StorageService.java:1793)
>>>>> 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:1427)
>>>>> at
>>>>> 
>>>>> javax.management.remote.rmi.RMIConnectionImpl.access$200(RMIConnectionImpl.java:72)
>>>>> at
>>>>> 
>>>>> javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1265)
>>>>> at
>>>>> 
>>>>> javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1360)
>>>>> 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:303)
>>>>> 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:662)
>>>>> Caused by: java.io.IOException: Unable to create hard link from
>>>>> /var/lib/cassandra/data/blotter/twitter_users/twitter_users.json to
>>>>> 
>>>>> /var/lib/cassandra/data/blotter/twitter_users/snapshots/1337115022389/twitter_users.json
>>>>> (errno 17)
>>>>> at org.apache.cassandra.utils.CLibrary.createHardLink(CLibrary.java:163)
>>>>> at
>>>>> 
>>>>> org.apache.cassandra.db.Directories.snapshotLeveledManifest(Directories.java:343)
>>>>> at
>>>>> 
>>>>> org.apache.cassandra.db.ColumnFamilyStore.snapshotWithoutFlush(ColumnFamilyStore.java:1450)
>>>>> ... 33 more
>>>>> 
>>>>> 
>>>>> However, an LS shows that both of these JSON files exist on the
>>>>> filesystem
>>>>> (although slightly different sizes).
>>>>> 
>>>>> [root@cassandra-n6 blotter]# ls -al
>>>>> /var/lib/cassandra/data/blotter/twitter_users/twitter_users.json
>>>>> -rw-r--r-- 1 root root 38786 May 15 20:51
>>>>> /var/lib/cassandra/data/blotter/twitter_users/twitter_users.json
>>>>> 
>>>>> [root@cassandra-n6 blotter]# ls -al
>>>>> 
>>>>> /var/lib/cassandra/data/blotter/twitter_users/snapshots/1337115022389/twitter_users.json
>>>>> -rw-r--r-- 1 root root 38778 May 15 20:50
>>>>> 
>>>>> /var/lib/cassandra/data/blotter/twitter_users/snapshots/1337115022389/twitter_users.json
>>>>> 
>>>>> 
>>>>> We are using Leveled Compaction on the twitter_users CF with I assume is
>>>>> creating the JSON files.
>>>>> 
>>>>> [root@cassandra-n6 blotter]# ls -al
>>>>> /var/lib/cassandra/data/blotter/twitter_users/*.json
>>>>> -rw-r--r-- 1 root root 38779 May 15 20:51
>>>>> /var/lib/cassandra/data/blotter/twitter_users/twitter_users.json
>>>>> -rw-r--r-- 1 root root 38779 May 15 20:51
>>>>> /var/lib/cassandra/data/blotter/twitter_users/twitter_users-old.json
>>>>> -rw-r--r-- 1 root root  1040 May 15 20:51
>>>>> 
>>>>> /var/lib/cassandra/data/blotter/twitter_users/twitter_users.twitter_user_attributes_screenname_idx.json
>>>>> -rw-r--r-- 1 root root  1046 May 15 20:50
>>>>> 
>>>>> /var/lib/cassandra/data/blotter/twitter_users/twitter_users.twitter_user_attributes_screenname_idx-old.json
>>>>> 
>>>>> 
>>>>> The other column families which are not using Leveled Compaction seem to
>>>>> have their snapshots created successfully.
>>>>> 
>>>>> Any ideas other than turning off Leveled Compaction?
>>>>> 
>>>>> 
>>>>> Thanks,
>>>>> 
>>>>> Brian
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>> 
>>> 
>> 
>> 
>> 
>> --
>> Jonathan Ellis
>> Project Chair, Apache Cassandra
>> co-founder of DataStax, the source for professional Cassandra support
>> http://www.datastax.com

Reply via email to