killbill / killbill-cloud

Kill Bill deployment utilities
https://killbill.io
Apache License 2.0
64 stars 85 forks source link

kpm diagnostic tool fails when there are no records in the tenant_kvs table with certain keys #263

Open reshmabidikar opened 5 months ago

reshmabidikar commented 5 months ago

The kpm diagnostic tool fails when there are no records in the tenant_kvs table with the following keys:

PLUGIN_CONFIG PUSH_NOTIFICATION_CB PER_TENANT_CONFIG PLUGIN_PAYMENT_STATE_MACHINE CATALOG OVERDUE_CONFIG INVOICE_TRANSLATION CATALOG_TRANSLATION INVOICE_TEMPLATE INVOICE_MP_TEMPLATE

Steps to reproduce:

  1. Create a new tenant. This will insert a record in the tenant_kvs table with the key CATALOG
  2. Mark the record from the tenant_kvs table as in_active (Run update tenant_kvs set is_active=0 where tenant_record_id=<id here>; )
  3. Run the kpm diagnostic tool as follows:
    kpm diagnostic --killbill-api-credentials=<api key> <api secret> --account-export=<account id> --killbill-url http://localhost:8080
  4. This displays the following error:
    I, [2024-04-05T14:12:08.319099 #28696]  INFO -- : Retrieving tenant configuration
    E, [2024-04-05T14:12:11.075882 #28696] ERROR -- : Data for key_prefix= not found
    E, [2024-04-05T14:12:11.077854 #28696] ERROR -- : D:/Software/Ruby27-x64/lib/ruby/gems/2.7.0/gems/kpm-0.11.1/lib/kpm/tenant_config.rb:44:in `export'
    D:/Software/Ruby27-x64/lib/ruby/gems/2.7.0/gems/kpm-0.11.1/lib/kpm/diagnostic_file.rb:85:in `retrieve_tenant_config'
    D:/Software/Ruby27-x64/lib/ruby/gems/2.7.0/gems/kpm-0.11.1/lib/kpm/diagnostic_file.rb:47:in `export_data'
    D:/Software/Ruby27-x64/lib/ruby/gems/2.7.0/gems/kpm-0.11.1/lib/kpm/tasks.rb:577:in `diagnostic'
    D:/Software/Ruby27-x64/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
    D:/Software/Ruby27-x64/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
    D:/Software/Ruby27-x64/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
    D:/Software/Ruby27-x64/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor/base.rb:485:in `start'
    D:/Software/Ruby27-x64/lib/ruby/gems/2.7.0/gems/kpm-0.11.1/bin/kpm:8:in `<top (required)>'
    D:/Software/Ruby27-x64/bin/kpm:23:in `load'
    D:/Software/Ruby27-x64/bin/kpm:23:in `<main>'
reshmabidikar commented 5 months ago

By default, the diagnostic tool tries to export the data for the keys defined here. Since none of these keys exist in the tenant_kvs table, the tool fails.