[ 
https://issues.apache.org/jira/browse/CASSANDRA-15598?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dmitry Kropachev updated CASSANDRA-15598:
-----------------------------------------
    Description: 
Reason:
 c-s reads metadata from database, and build column generator from it.
 But this logic is build in a way so that it does not support generator 
recursion, which is necessary to support embedded collections.

Fix:
 This fix is simple exclude this type of columns from being processed.

Steps to reproduce:
 # docker run -d --name cassandra cassandra:latest
 # cassandra-stress user profile=cs_no_mv_basic_profile.yaml ops'(insert=1)' 
cl=ONE n=20 -pop seq=1..10000000 -port jmx=6868 -mode cql3 native -rate 
threads=2 -node 172.17.0.2
 # docker exec -ti cassandra cqlsh -e 'ALTER TABLE mview.users ADD ( asdasdasd 
set<frozen<set>>);'
 # cassandra-stress user profile=cs_no_mv_basic_profile.yaml ops'(insert=1)' 
cl=ONE n=20 -pop seq=1..10000000 -port jmx=6868 -mode cql3 native -rate 
threads=2 -node 172.17.0.2

Result:
 Extra Schema Definitions: null
 Generator Configs:
 password: Size: Fixed: key=80;
 last_name: Size: Uniform: min=1,max=32;
 id: Size: Uniform: min=1,max=10;
 first_name: Size: Fixed: key=16;
 email: Size: Uniform: min=16,max=50;
 username: Size: Uniform: min=10,max=30;
 Query Definitions:
 read1: CQL:select * from mview.users where id = ? LIMIT 10;Fields:samerow;
 Token Range Queries:
 Insert Settings:
 partitions: fixed(1)
 batchtype: UNLOGGED
 Connected to cluster: , max pending requests per connection 128, max 
connections per host 8
 Datacenter: datacenter1; Host: /172.17.0.2:9042; Rack: rack1
 Created schema. Sleeping 1s for propagation.
 java.lang.NullPointerException
 at 
org.apache.cassandra.stress.StressProfile$ColumnInfo.getGenerator(StressProfile.java:760)
 at 
org.apache.cassandra.stress.StressProfile$ColumnInfo.getGenerator(StressProfile.java:800)
 at 
org.apache.cassandra.stress.StressProfile$ColumnInfo.getGenerator(StressProfile.java:800)
 at 
org.apache.cassandra.stress.StressProfile$ColumnInfo.getGenerator(StressProfile.java:755)
 at 
org.apache.cassandra.stress.StressProfile$GeneratorFactory.get(StressProfile.java:733)
 at 
org.apache.cassandra.stress.StressProfile$GeneratorFactory.newGenerator(StressProfile.java:726)
 at 
org.apache.cassandra.stress.StressProfile.newGenerator(StressProfile.java:696)
 at 
org.apache.cassandra.stress.StressProfile.printSettings(StressProfile.java:126)
 at 
org.apache.cassandra.stress.settings.StressSettings.lambda$printSettings$1(StressSettings.java:311)
 at java.util.LinkedHashMap.forEach(LinkedHashMap.java:684)
 at 
org.apache.cassandra.stress.settings.StressSettings.printSettings(StressSettings.java:311)
 at org.apache.cassandra.stress.Stress.run(Stress.java:95)
 at org.apache.cassandra.stress.Stress.main(Stress.java:62)

  was:
Reason:
c-s reads metadata from database, and build column generator from it.
But this logic is build in a way so that it does not support generator 
recursion, which is necessary to support embedded collections.

Fix:
This fix is simple exclude this type of columns from being generated.

Steps to reproduce:
 # docker run -d --name cassandra cassandra:latest
 # cassandra-stress user profile=cs_no_mv_basic_profile.yaml ops'(insert=1)' 
cl=ONE n=20 -pop seq=1..10000000 -port jmx=6868 -mode cql3 native -rate 
threads=2 -node 172.17.0.2
 # docker exec -ti cassandra cqlsh -e 'ALTER TABLE mview.users ADD ( asdasdasd 
set<frozen<set>>);'
 # cassandra-stress user profile=cs_no_mv_basic_profile.yaml ops'(insert=1)' 
cl=ONE n=20 -pop seq=1..10000000 -port jmx=6868 -mode cql3 native -rate 
threads=2 -node 172.17.0.2

Result:
Extra Schema Definitions: null
Generator Configs:
password: Size: Fixed: key=80;
last_name: Size: Uniform: min=1,max=32;
id: Size: Uniform: min=1,max=10;
first_name: Size: Fixed: key=16;
email: Size: Uniform: min=16,max=50;
username: Size: Uniform: min=10,max=30;
Query Definitions:
read1: CQL:select * from mview.users where id = ? LIMIT 10;Fields:samerow;
Token Range Queries:
Insert Settings:
partitions: fixed(1)
batchtype: UNLOGGED
Connected to cluster: , max pending requests per connection 128, max 
connections per host 8
Datacenter: datacenter1; Host: /172.17.0.2:9042; Rack: rack1
Created schema. Sleeping 1s for propagation.
java.lang.NullPointerException
at 
org.apache.cassandra.stress.StressProfile$ColumnInfo.getGenerator(StressProfile.java:760)
at 
org.apache.cassandra.stress.StressProfile$ColumnInfo.getGenerator(StressProfile.java:800)
at 
org.apache.cassandra.stress.StressProfile$ColumnInfo.getGenerator(StressProfile.java:800)
at 
org.apache.cassandra.stress.StressProfile$ColumnInfo.getGenerator(StressProfile.java:755)
at 
org.apache.cassandra.stress.StressProfile$GeneratorFactory.get(StressProfile.java:733)
at 
org.apache.cassandra.stress.StressProfile$GeneratorFactory.newGenerator(StressProfile.java:726)
at 
org.apache.cassandra.stress.StressProfile.newGenerator(StressProfile.java:696)
at 
org.apache.cassandra.stress.StressProfile.printSettings(StressProfile.java:126)
at 
org.apache.cassandra.stress.settings.StressSettings.lambda$printSettings$1(StressSettings.java:311)
at java.util.LinkedHashMap.forEach(LinkedHashMap.java:684)
at 
org.apache.cassandra.stress.settings.StressSettings.printSettings(StressSettings.java:311)
at org.apache.cassandra.stress.Stress.run(Stress.java:95)
at org.apache.cassandra.stress.Stress.main(Stress.java:62)


> cassandra-stress in user profile mode fails on handling set<set<int>> columns
> -----------------------------------------------------------------------------
>
>                 Key: CASSANDRA-15598
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-15598
>             Project: Cassandra
>          Issue Type: Bug
>            Reporter: Dmitry Kropachev
>            Priority: Normal
>         Attachments: cs_no_mv_basic_profile.zip
>
>
> Reason:
>  c-s reads metadata from database, and build column generator from it.
>  But this logic is build in a way so that it does not support generator 
> recursion, which is necessary to support embedded collections.
> Fix:
>  This fix is simple exclude this type of columns from being processed.
> Steps to reproduce:
>  # docker run -d --name cassandra cassandra:latest
>  # cassandra-stress user profile=cs_no_mv_basic_profile.yaml ops'(insert=1)' 
> cl=ONE n=20 -pop seq=1..10000000 -port jmx=6868 -mode cql3 native -rate 
> threads=2 -node 172.17.0.2
>  # docker exec -ti cassandra cqlsh -e 'ALTER TABLE mview.users ADD ( 
> asdasdasd set<frozen<set>>);'
>  # cassandra-stress user profile=cs_no_mv_basic_profile.yaml ops'(insert=1)' 
> cl=ONE n=20 -pop seq=1..10000000 -port jmx=6868 -mode cql3 native -rate 
> threads=2 -node 172.17.0.2
> Result:
>  Extra Schema Definitions: null
>  Generator Configs:
>  password: Size: Fixed: key=80;
>  last_name: Size: Uniform: min=1,max=32;
>  id: Size: Uniform: min=1,max=10;
>  first_name: Size: Fixed: key=16;
>  email: Size: Uniform: min=16,max=50;
>  username: Size: Uniform: min=10,max=30;
>  Query Definitions:
>  read1: CQL:select * from mview.users where id = ? LIMIT 10;Fields:samerow;
>  Token Range Queries:
>  Insert Settings:
>  partitions: fixed(1)
>  batchtype: UNLOGGED
>  Connected to cluster: , max pending requests per connection 128, max 
> connections per host 8
>  Datacenter: datacenter1; Host: /172.17.0.2:9042; Rack: rack1
>  Created schema. Sleeping 1s for propagation.
>  java.lang.NullPointerException
>  at 
> org.apache.cassandra.stress.StressProfile$ColumnInfo.getGenerator(StressProfile.java:760)
>  at 
> org.apache.cassandra.stress.StressProfile$ColumnInfo.getGenerator(StressProfile.java:800)
>  at 
> org.apache.cassandra.stress.StressProfile$ColumnInfo.getGenerator(StressProfile.java:800)
>  at 
> org.apache.cassandra.stress.StressProfile$ColumnInfo.getGenerator(StressProfile.java:755)
>  at 
> org.apache.cassandra.stress.StressProfile$GeneratorFactory.get(StressProfile.java:733)
>  at 
> org.apache.cassandra.stress.StressProfile$GeneratorFactory.newGenerator(StressProfile.java:726)
>  at 
> org.apache.cassandra.stress.StressProfile.newGenerator(StressProfile.java:696)
>  at 
> org.apache.cassandra.stress.StressProfile.printSettings(StressProfile.java:126)
>  at 
> org.apache.cassandra.stress.settings.StressSettings.lambda$printSettings$1(StressSettings.java:311)
>  at java.util.LinkedHashMap.forEach(LinkedHashMap.java:684)
>  at 
> org.apache.cassandra.stress.settings.StressSettings.printSettings(StressSettings.java:311)
>  at org.apache.cassandra.stress.Stress.run(Stress.java:95)
>  at org.apache.cassandra.stress.Stress.main(Stress.java:62)



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to