0

Configurations:-

3 node cluster

Node 1 --> 172.27.21.16(Seed Node)

Node 2 --> 172.27.21.18

Node 3 --> 172.27.21.19

cassandra.yaml paramters for all the nodes:-

1) seeds: "172.27.21.16"

2) write_request_timeout_in_ms: 5000

3) listen_address: 172.27.21.1(6,8,9)

4) rpc_address: 172.27.21.1(6,8,9)

This is my code.yaml file:-

    keyspace: prutorStress3node
    keyspace_definition: |
  CREATE KEYSPACE prutorStress3node WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 2};


table: code

table_definition: |
  CREATE TABLE code (
        id timeuuid,
        assignment_id bigint,
        user_id text,
        contents text,
        save_type smallint,
        save_time timeuuid,
        PRIMARY KEY(assignment_id, id)
  ) WITH CLUSTERING ORDER BY (id DESC)


columnspec:
  - name: assignment_id
    population: uniform(1..100000)  # Assignment IDs from range 1-100000

  - name: id
    cluster: fixed(100)             # Each assignment id will have atmost 100 ids(maximum 100 codes                 allowed per student)

  - name: user_id
    size: fixed(50)                 # user_id comes from account table varchar(50)

  - name: contents
    size: uniform(1..2000)

  - name: save_type
    size: fixed(1)                  # Generated values between 1 to 4
    population: uniform(1..4)

  - name: save_time


insert:
  partitions: fixed(1)            # The number of partitions to update per batch

  select:    fixed(1)/100         # The ratio of rows each partition should insert as a proportion of the total possible rows for the partition (as defined by the clustering distribution columns

  batchtype: UNLOGGED             # The type of CQL batch to use. Either LOGGED/UNLOGGED

queries:
   query1:
      cql: select id,contents,save_type,save_time from code where assignment_id = ?
      fields: samerow
   query2: 
      cql: select id,contents,save_type,save_time from code where assignment_id = ? LIMIT 10
      fields: samerow
   query3:
      cql: SELECT contents FROM code WHERE id = ?   # Create index for this query
      fields: samerow

Following is my script which I am running from 172.27.21.17(A node on the same network but in a different cluster):-

#!/bin/bash

echo '***********************************'
echo Deleting old data from prutorStress3node
echo '***********************************'

cqlsh -e "DROP KEYSPACE prutorStress3node" 172.27.21.16
sleep 120

echo '***********************************'
echo Creating fresh data
echo '***********************************'

/bin/cassandra-stress user profile=./code.yaml n=1000000 no-warmup cl=quorum ops\(insert=1\) \
-rate threads=25 -node 172.27.21.16
sleep 120

Issue:- The issue is that when I run the script just after deleting previous data and after bringing up those nodes, it works fine, but when I run it further, for each run, I hit the following error:-

Unable to find prutorStress3node.code
at org.apache.cassandra.stress.StressProfile.maybeLoadSchemaInfo(StressProfile.java:306)
    at org.apache.cassandra.stress.StressProfile.maybeCreateSchema(StressProfile.java:273)
    at org.apache.cassandra.stress.StressProfile.newGenerator(StressProfile.java:676)
    at org.apache.cassandra.stress.StressProfile.printSettings(StressProfile.java:129)
    at org.apache.cassandra.stress.settings.StressSettings.printSettings(StressSettings.java:383)
    at org.apache.cassandra.stress.Stress.run(Stress.java:95)
    at org.apache.cassandra.stress.Stress.main(Stress.java:62)

In the file StressProfile.java ,I saw that table metadata is being populated to NULL. I tried to make sense of the stack trace, but was not able to make anything of it. Please give me some directions as to what might have gone wrong?

Erick Ramirez
  • 13,964
  • 1
  • 18
  • 23
Akshay Jindal
  • 115
  • 3
  • 11

1 Answers1

0

Giving keyspace and table name in small case solved the issue for me. Previously i was giving mixed case and i was getting the same error.

Kalaiselvam M
  • 1,050
  • 1
  • 16
  • 25