[ https://issues.apache.org/jira/browse/CASSANDRA-5987?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13763092#comment-13763092 ]
Henrik Baastrup edited comment on CASSANDRA-5987 at 9/10/13 3:00 PM: --------------------------------------------------------------------- Hi Yuki, I see your point! I have now simplified my program and table so I do not use composite keys, but only one primary key; I use a UUID I generate on the fly for this. The problem remain, I still get the IllegalArgumentException. I changed my create table statement as follow: {quote} CREATE TABLE nsmo_dns ( key uuid PRIMARY KEY, endtime bigint, lastframetime bigint, . . {quote} no PRIMARY KEY (callsequencenumber,moduleid). My SSTableSimpleUnsortedWriter create statement is as follow: {quote} new SSTableSimpleUnsortedWriter( directory, partitioner, keyspace, columnFamily, UUIDType.instance, null, BUFFER_SIZE); {quote} My write looks like this now: {quote} public void write(SSTableSimpleUnsortedWriter writer, long timestamp) throws IOException { writer.newRow(ByteBuffer.wrap(decompose(key))); writer.addColumn(bytes("endtime"), bytes(endtime), timestamp); writer.addColumn(bytes("lastframetime"), bytes(lastframetime), timestamp); writer.addColumn(bytes("begintime"), bytes(begintime), timestamp); . . {quote} As I see it, either does SSTableSimpleUnsortedWriter not write the length of the column name in front of it, or the AbstractCompositeType in the Cassandra engine expect a length of the column name where there is none. Of cause, there exist also the possibility that I have missed something whats very likely ;) was (Author: hbaastrup): Hi Yuki, I see your point! I have now simplified my program and table so I do not use composite keys, but only one primary key; I use a UUID I generate on the fly for this. The problem remain, I still get the IllegalArgumentException. I changed my create table statement as follow: {quote} CREATE TABLE nsmo_dns ( key uuid PRIMARY KEY, endtime bigint, lastframetime bigint, . . {quote} and my SSTableSimpleUnsortedWriter create statement is as follow: {quote} new SSTableSimpleUnsortedWriter( directory, partitioner, keyspace, columnFamily, UUIDType.instance, null, BUFFER_SIZE); {quote} My write looks like this now: {quote} public void write(SSTableSimpleUnsortedWriter writer, long timestamp) throws IOException { writer.newRow(ByteBuffer.wrap(decompose(key))); writer.addColumn(toBufferWithShortLength("endtime"), bytes(endtime), timestamp); writer.addColumn(toBufferWithShortLength("lastframetime"), bytes(lastframetime), timestamp); writer.addColumn(bytes("begintime"), bytes(begintime), timestamp); . . {quote} As I see it, either does SSTableSimpleUnsortedWriter not write the length of the column name in front of it, or the AbstractCompositeType in the Cassandra engine expect a length of the column name where there is none. Of cause, there exist also the possibility that I have missed something ;) > IllegalArgumentException when bulk loading > ------------------------------------------ > > Key: CASSANDRA-5987 > URL: https://issues.apache.org/jira/browse/CASSANDRA-5987 > Project: Cassandra > Issue Type: Bug > Components: Core > Environment: Cassandra 2.0.0 on Linux > Reporter: Henrik Baastrup > Attachments: CassandraLoader.tgz > > > I have created SSTables with the > org.apache.cassandra.io.sstable.SSTableSimpleUnsortedWriter class, but when I > try to load the SSTables with "sstableloader -d localhost nsmo_ds/nsmo_ds" I > get: > WARN 13:46:40,875 [Stream #7d0193a0-1945-11e3-ac84-f9df5751357f] Stream > failed > Streaming to the following hosts failed: > {quote} > [/127.0.0.1] > java.util.concurrent.ExecutionException: > org.apache.cassandra.streaming.StreamException: Stream failed > WARN 13:46:40,877 [Stream #7d0193a0-1945-11e3-ac84-f9df5751357f] Stream > failed > ERROR 13:46:40,877 [Stream #7d0193a0-1945-11e3-ac84-f9df5751357f] Streaming > error occurred > java.io.IOException: Broken pipe > at sun.nio.ch.FileDispatcherImpl.write0(Native Method) > at sun.nio.ch.SocketDispatcher.write(Unknown Source) > at sun.nio.ch.IOUtil.writeFromNativeBuffer(Unknown Source) > at sun.nio.ch.IOUtil.write(Unknown Source) > at sun.nio.ch.SocketChannelImpl.write(Unknown Source) > at > org.apache.cassandra.streaming.messages.StreamMessage.serialize(StreamMessage.java:43) > at > org.apache.cassandra.streaming.ConnectionHandler$OutgoingMessageHandler.sendMessage(ConnectionHandler.java:384) > at > org.apache.cassandra.streaming.ConnectionHandler$OutgoingMessageHandler.run(ConnectionHandler.java:372) > at java.lang.Thread.run(Unknown Source) > WARN 13:46:40,877 [Stream #7d0193a0-1945-11e3-ac84-f9df5751357f] Stream > failed > {quote} > in the server log I have: > {quote} > ERROR [STREAM-IN-/172.27.14.242] 2013-09-09 13:46:40,859 StreamSession.java > (line 409) [Stream #7d0193a0-1945-11e3-ac84-f9df5751357f] Streaming error > occurred > java.io.IOException: Too many retries for Header (cfId: > 976cb58f-d1f4-39c6-b6cc-8aea7a64daca, #0, version: ja, estimated keys: 62208, > transfer size: 54794676, compressed?: false) > at > org.apache.cassandra.streaming.StreamSession.doRetry(StreamSession.java:522) > at > org.apache.cassandra.streaming.messages.FileMessage$1.deserialize(FileMessage.java:59) > at > org.apache.cassandra.streaming.messages.FileMessage$1.deserialize(FileMessage.java:45) > at > org.apache.cassandra.streaming.messages.StreamMessage.deserialize(StreamMessage.java:54) > at > org.apache.cassandra.streaming.ConnectionHandler$IncomingMessageHandler.run(ConnectionHandler.java:287) > at java.lang.Thread.run(Unknown Source) > Caused by: java.lang.IllegalArgumentException > at java.nio.Buffer.limit(Unknown Source) > at > org.apache.cassandra.db.marshal.AbstractCompositeType.getBytes(AbstractCompositeType.java:55) > at > org.apache.cassandra.db.marshal.AbstractCompositeType.getWithShortLength(AbstractCompositeType.java:64) > at > org.apache.cassandra.db.marshal.AbstractCompositeType.split(AbstractCompositeType.java:130) > at > org.apache.cassandra.io.sstable.ColumnNameHelper.minComponents(ColumnNameHelper.java:101) > at > org.apache.cassandra.io.sstable.SSTableWriter.appendFromStream(SSTableWriter.java:254) > at > org.apache.cassandra.streaming.StreamReader.writeRow(StreamReader.java:134) > at > org.apache.cassandra.streaming.StreamReader.read(StreamReader.java:88) > at > org.apache.cassandra.streaming.messages.FileMessage$1.deserialize(FileMessage.java:55) > ... 4 more > INFO [STREAM-IN-/172.27.14.242] 2013-09-09 13:46:40,862 > StreamResultFuture.java (line 180) [Stream > #7d0193a0-1945-11e3-ac84-f9df5751357f] Session with /172.27.14.242 is complete > WARN [STREAM-IN-/172.27.14.242] 2013-09-09 13:46:40,864 > StreamResultFuture.java (line 209) [Stream > #7d0193a0-1945-11e3-ac84-f9df5751357f] Stream fail > {quote} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira