scylladb / scylla-ansible-roles

Ansible roles for deploying and managing Scylla, Scylla-Manager and Scylla-Monitoring
40 stars 35 forks source link

cleanup script will fail if table has "-" in its name #387

Closed tarzanek closed 1 day ago

tarzanek commented 2 days ago

https://github.com/scylladb/scylla-ansible-roles/blob/master/example-playbooks/run_cleanup/files/cleanup.sh

...
error: Scylla API server HTTP POST to URL '/storage_service/keyspace_cleanup/alternator_my-keyspace_dev' failed: Can't find a column family my in keyspace alternator_my-keyspace_dev
...

name of table is "my-table"

tarzanek commented 2 days ago
    TB=$(echo "$i"|awk -F'/' '{ print $NF }'|awk -F'-' '{ print $1 }')

should be moved to something like

    FTB=$(echo "$i"|awk -F'/' '{ print $NF }')
    TB=${FTB%-*}

or anything similar, that would just strip away LAST occurence of everything after LAST "-"

tarzanek commented 2 days ago

so alternator can accept table names with "-" in name, hence this can happen (cql won't allow that)

tarzanek commented 2 days ago

e.g. I can create such table: ubuntu@ubuntu:~$ ls /var/lib/scylla/data/alternator_my-usertable/my-usertable-b2a9512037af11efbdddb8c11b2d3d7b/

$ sudo apt install python3-boto3
$ cat create_table_alternator.py
import boto3
dynamodb = boto3.resource('dynamodb',endpoint_url='http://localhost:8000',
                  region_name='None', aws_access_key_id='None', aws_secret_access_key='None')

dynamodb.create_table(
    AttributeDefinitions=[
    {
        'AttributeName': 'key',
        'AttributeType': 'S'
    },
    ],
    BillingMode='PAY_PER_REQUEST',
    TableName='my-usertable',
    KeySchema=[
    {
        'AttributeName': 'key',
        'KeyType': 'HASH'
    },
    ])
$ python3 create_table_alternator.py
tarzanek commented 2 days ago

hmm that simple patch works

Jul 01 13:45:19 ubuntu scylla[849]:  [shard 0:stre] api - force_keyspace_cleanup: keyspace=alternator_my-usertable tables={table{name=my-usertable, id=b2a95120-37af-11ef-bddd-b8c11b2d3d7b}}