aws-samples / amazon-keyspaces-toolkit

Docker Image /tools for working with Amazon Keyspaces.
MIT No Attribution
33 stars 20 forks source link

cqlsh-expansion: AttributeError - 'NoneType' object has no attribute 'is_up' #21

Open jlewis-spotnana opened 8 months ago

jlewis-spotnana commented 8 months ago

Describe the bug The COPY FROM command produces the following error on a csv file created with COPY TO.

<stdin>:1:Failed to import 30 rows: AttributeError - 'NoneType' object has no attribute 'is_up',  given up after 1 attempts

To Reproduce Steps to reproduce the behavior:

  1. Install cqlsh-expansion as described here. https://docs.aws.amazon.com/keyspaces/latest/devguide/programmatic.cqlsh.html

  2. Dump data to csv

    cqlsh-expansion cassandra.us-west-2.amazonaws.com 9142 --ssl -e "COPY keyspace1.table1 TO './dump.csv' WITH HEADER='true';"
  3. Create new keyspace/table, matching the source table

    
    CREATE KEYSPACE IF NOT EXISTS "keyspace2"
    WITH REPLICATION = {'class':'SingleRegionStrategy'};

CREATE TABLE IF NOT EXISTS keyspace2.table2 ( col1 text, col2 text, col3 text, created_at timestamp, my_data blob, PRIMARY KEY (col1, col2, col3) ) WITH CLUSTERING ORDER BY (col2 ASC, col3 ASC) AND bloom_filter_fp_chance = 0.01 AND comment = '' AND crc_check_chance = 1.0 AND dclocal_read_repair_chance = 0.0 AND default_time_to_live = 0 AND gc_grace_seconds = 7776000 AND max_index_interval = 2048 AND memtable_flush_period_in_ms = 3600000 AND min_index_interval = 128 AND read_repair_chance = 0.0 AND speculative_retry = '99PERCENTILE';


4. Import data

cqlsh-expansion cassandra.us-west-2.amazonaws.com 9142 --ssl -e "CONSISTENCY LOCAL_QUORUM; COPY keyspace2.table2 FROM './dump.csv' WITH HEADER='true';"


5. Observe errors

Consistency level set to LOCAL_QUORUM. cqlsh current consistency level is LOCAL_QUORUM. Reading options from /home/ubuntu/.cassandra/cqlshrc:[copy]: {'numprocesses': '16', 'maxattempts': '1000'} Reading options from /home/ubuntu/.cassandra/cqlshrc:[copy-from]: {'ingestrate': '1500', 'maxparseerrors': '1000', 'maxinserterrors': '-1', 'maxbatchsize': '10', 'minbatchsize': '1', 'chunksize': '30'} Reading options from the command line: {'header': 'true'} Using 16 child processes

Starting copy of keyspace2.table2 with columns [col1, col2, col3, created_at, my_data].

:1:Failed to import 30 rows: Error - field larger than field limit (999999), given up after 1 attempts :1:Failed to import 30 rows: AttributeError - 'NoneType' object has no attribute 'is_up', given up after 1 attempts :1:Failed to import 30 rows: AttributeError - 'NoneType' object has no attribute 'is_up', given up after 1 attempts :1:Failed to import 30 rows: AttributeError - 'NoneType' object has no attribute 'is_up', given up after 1 attempts :1:Failed to import 30 rows: Error - field larger than field limit (999999), given up after 1 attempts :1:Failed to import 30 rows: Error - field larger than field limit (999999), given up after 1 attempts :1:Failed to import 30 rows: AttributeError - 'NoneType' object has no attribute 'is_up', given up after 1 attempts :1:Failed to import 30 rows: AttributeError - 'NoneType' object has no attribute 'is_up', given up after 1 attempts ... Processed: 14105 rows; Rate: 212 rows/s; Avg. rate: 185 rows/s 0 rows imported from 1 files in 0 day, 0 hour, 1 minutes, and 16.140 seconds (0 skipped). ``` **Expected behavior** I expect the import to complete successfully without errors. **Screenshots** n/a **Environment (please complete the following information):** - Host OS: Ubuntu 22.04 - AWS Keyspaces - cqlsh-expansion: 6.1.0 **Additional context** I'm just trying to do a simple export/import. (P.S. Appologies if this is the wrong repo to report 'cqlsh-expansion' bugs.)
jlewis-spotnana commented 8 months ago

I ran cqlsh-expansion with --debug and found the following stack trace.

Starting copy of keyspace2.table2 with columns [col1, col2, col3, created_at, my_data].
Traceback (most recent call last):
  File "/home/ubuntu/.local/lib/python3.10/site-packages/cqlshlib/copyutil.py", line 2457, in inner_run
    for replicas, batch in split_into_batches(chunk, conv, tm):
  File "/home/ubuntu/.local/lib/python3.10/site-packages/cqlshlib/copyutil.py", line 2632, in split_into_batches
    yield filter_replicas(replicas[ring_pos]), make_batch(chunk['id'], rows[i:i + max_batch_size])
  File "/home/ubuntu/.local/lib/python3.10/site-packages/cqlshlib/copyutil.py", line 2268, in filter_replicas
    return [r for r in shuffled if r.is_up is not False and r.datacenter == self.local_dc] if hosts else ()
  File "/home/ubuntu/.local/lib/python3.10/site-packages/cqlshlib/copyutil.py", line 2268, in <listcomp>
    return [r for r in shuffled if r.is_up is not False and r.datacenter == self.local_dc] if hosts else ()
AttributeError: 'NoneType' object has no attribute 'is_up'
fptelen07 commented 3 months ago

any solution to fix this issue?