Kaui and Catalog Errors

1,256 views
Skip to first unread message

cynic...@gmail.com

unread,
Nov 17, 2016, 11:26:17 PM11/17/16
to Kill Bill users mailing-list
Hello everyone,

I was wondering if I could ask people about their usage of Kaui, specifically the standalone docker image.

I have deployed KillBill 0.18.0 and Kaui Standalone 0.8.0 and MariaDB in Docker and imported the 0.18.0 util/ddl.sql, usage/ddl.sql, tenant/ddl.sql, account/ddl.sql, beatrix/ddl.sql, catalog/ddl.sql, invoice/ddl.sql, payment/ddl.sql, entitlement/ddl.sql, subscription/ddl.sql. On the Kaui front we've imported the 0.15.0 ddl.sql. We are also using the stripe plugin and have imported the DDL's for that.

This all boots up fine and everyone talks to everyone else. The issues start when managing Killbill via Kaui.

My problems specifically involve uploading of Catalog XML files. I can upload Catalog XML's but occasionally one of them will break the catalog leading to a "org.killbill.billing.catalog.api.CatalogApiException: Invalid catalog for tenant : 1" exception this leads to a blank catalog in Kaui. I can also trigger this stage if I add a currency to a Plan but leave the price blank, something which someone in a rush might do. I can't yet pinpoint what will cause this issue as Kaui reports that the catalog import went fine.

When the database gets in this state there isn't much I can do, as there doesn't seem to be any way to revert or delete a plan short of intervention into the DB, which hasn't gone well for us in the past as tenants don't seem to magically get back good catalogs when you delete bad ones.

I'm wondering if this is just me and my process, or is there something else with the way Kaui works that I should be aware of.

Thanks,

Anthony Murphy

stephane brossier

unread,
Nov 18, 2016, 8:47:26 PM11/18/16
to cynic...@gmail.com, Kill Bill users mailing-list
Anthony,

KAUI allows you to upload catalog XML and/or add plans but we acknowledge that we are missing some hardening in terms of validation and also to prevent accidental changes. The functionality is quite new and so at this stage we suggest to mostly use it for test environment,  (and then once catalog is indeed what one expects this can be used to upload on production system). We eventually intend to harden the UI (and PR's are welcome too). Could you confirm the exception you got is related to the fact that your catalog version was invalid?

Independently we do have a tool to (partly) validate catalog but Kill Bill server does not use it runtime:
# Download the tool from maven central:
# Run the command
java -jar killbill-catalog-*-load-tool.jar /path/to/catalog.xml


On the deletion side, we thought about it, but this is a tricky problem because we can't just delete 'bad version' as one may have created subscriptions that started to use such catalog... one option would be to prompt user to delete (disable) such version with the drawback that if user says yes and yet there are subscriptions using that version, the system ends up in an invalid state. Another option is to check that no subscription use such invalid version but this is quite costly to implement. So, this is where we are left at this stage.

Workarounds: You could easily go in the DB and delete the rows (tenant_kvs table). Since catalog is cached on the nodes you would need to either restart or invalidate the caches.

Hope this helps,

Stéphane




--
You received this message because you are subscribed to the Google Groups "Kill Bill users mailing-list" group.
To unsubscribe from this group and stop receiving emails from it, send an email to killbilling-users+unsubscribe@googlegroups.com.
To post to this group, send email to killbilling-users@googlegroups.com.
Visit this group at https://groups.google.com/group/killbilling-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/killbilling-users/b4acb90d-b830-4004-be48-71fda1c61816%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Anthony Murphy

unread,
Nov 19, 2016, 3:46:04 AM11/19/16
to Kill Bill users mailing-list, cynic...@gmail.com
Thanks for your help Stéphane,

I'm not sure if there is an exception thrown at import as the catalog goes in just fine, it just has an issue when you try to get it back out via the API. I'll do some testing on Monday and report back. 

I've had a go at the catalog validator and I get the following exception when I use it:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
Exception in thread "main" javax.xml.bind.UnmarshalException: Unable to create an instance of org.killbill.billing.catalog.StandaloneCatalog
 - with linked exception:
[java.lang.reflect.InvocationTargetException]
        at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent(Unknown Source)
        at com.sun.xml.internal.bind.v2.runtime.unmarshaller.Loader.reportError(Unknown Source)
        at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext.createInstance(Unknown Source)
        at com.sun.xml.internal.bind.v2.runtime.unmarshaller.StructureLoader.startElement(Unknown Source)
        at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext._startElement(Unknown Source)
        at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext.startElement(Unknown Source)
        at com.sun.xml.internal.bind.v2.runtime.unmarshaller.ValidatingUnmarshaller.startElement(Unknown Source)
        at com.sun.xml.internal.bind.v2.runtime.unmarshaller.SAXConnector.startElement(Unknown Source)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(Unknown Source)
        at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
        at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(Unknown Source)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(Unknown Source)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
        at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
        at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
        at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
        at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(Unknown Source)
        at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(Unknown Source)
        at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(Unknown Source)
        at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(Unknown Source)
        at org.killbill.xmlloader.XMLLoader.getObjectFromStream(XMLLoader.java:66)
        at org.killbill.xmlloader.XMLLoader.getObjectFromUri(XMLLoader.java:58)
        at org.killbill.billing.catalog.LoadCatalog.main(LoadCatalog.java:33)
Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
        at java.lang.reflect.Constructor.newInstance(Unknown Source)
        at com.sun.xml.internal.bind.v2.ClassFactory.create0(Unknown Source)
        at com.sun.xml.internal.bind.v2.runtime.ClassBeanInfoImpl.createInstance(Unknown Source)
        ... 26 more
Caused by: java.lang.NoClassDefFoundError: com/google/common/collect/Ordering
        at org.killbill.billing.catalog.CatalogEntityCollection.<init>(CatalogEntityCollection.java:34)
        at org.killbill.billing.catalog.StandaloneCatalog.<init>(StandaloneCatalog.java:96)
        ... 32 more
Caused by: java.lang.ClassNotFoundException: com.google.common.collect.Ordering
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 34 more

Am I missing something? Do I need a particular version of Java or the SLF4J library it mentions?

Thanks,

Anthony


To unsubscribe from this group and stop receiving emails from it, send an email to killbilling-us...@googlegroups.com.
To post to this group, send email to killbill...@googlegroups.com.

stephane brossier

unread,
Nov 21, 2016, 2:14:54 PM11/21/16
to Anthony Murphy, Kill Bill users mailing-list
Anthony,

The issue had been reported and we have made a fix. I just released 0.18.1 that you could use (and which contains the fix).

Stéphane


To unsubscribe from this group and stop receiving emails from it, send an email to killbilling-users+unsubscribe@googlegroups.com.
To post to this group, send email to killbilling-users@googlegroups.com.

Anthony Murphy

unread,
Nov 22, 2016, 10:13:34 PM11/22/16
to Kill Bill users mailing-list, cynic...@gmail.com
Thanks Stéphane,

I can confirm that the checking tool works now.

Anthony

mundru...@gmail.com

unread,
Mar 9, 2017, 1:59:04 AM3/9/17
to Kill Bill users mailing-list

Hi Anthony,

I saw the same issue while uploading the catalog multiple times in version 0.18.4. Please find the nodesInfo as attached. The use case is whenever we update the catalog next time, go the below error. But the workaround is working, say change the tenant_kvs action column 0 and clear the cache. Please let me know, if anything missed.


{
"className": "org.killbill.billing.catalog.api.CatalogApiException",
"code": 2080,
"message": "Invalid catalog for tenant : 4",
"causeClassName": null,
"causeMessage": null,
"stackTrace": []
}

[
{
"nodeName": "0e82d598570d",
"bootTime": "2017-03-08T10:43:18.000Z",
"lastUpdatedDate": "2017-03-08T10:43:18.000Z",
"kbVersion": "0.18.4",
"apiVersion": "0.50.1",
"pluginApiVersion": "0.23.1",
"commonVersion": "0.20.3",
"platformVersion": "0.36.2",
..
}
]

stephane brossier

unread,
Mar 14, 2017, 7:35:22 PM3/14/17
to mundru...@gmail.com, Kill Bill users mailing-list
Could you describe the exact steps to reproduce the issue?

--
You received this message because you are subscribed to the Google Groups "Kill Bill users mailing-list" group.
To unsubscribe from this group and stop receiving emails from it, send an email to killbilling-users+unsubscribe@googlegroups.com.
To post to this group, send email to killbilling-users@googlegroups.com.

stephane brossier

unread,
Mar 16, 2017, 3:51:41 PM3/16/17
to Satish Mundru, Kill Bill users mailing-list
Satish,

You are catalog loads fine for me, so i will need some extra steps to understand what breaks and how?

Do you have anything more specific?

Stéphane


On Thu, Mar 16, 2017 at 3:55 AM, Satish Mundru <mundru...@gmail.com> wrote:
Hi Stephane,

Please find the attached catalog file that I am experiencing the issue. 

When I add  a new product or change the product in catalog and ran the below API (0.18 version) to update the catalog.

API: POST: /1.0/kb/catalog

The workaround provided in mail chain is working. Please provide inputs and anything needed in configurations.

Thanks,
Satish

stephane brossier

unread,
Mar 16, 2017, 5:46:01 PM3/16/17
to Satish Mundru, Kill Bill users mailing-list
Satish,

Also FYI i created #722 to track the issue and already made a fix to address the case that was reported by Anthony (in this thread) where a user may add a price/currency and accidentally forget to enter the amount; this would lead to a corrupted catalog as described in this thread. 

At this point i am looking for other scenario that could lead to that state. If you have any, please share.

Stéphane

Satish Mundru

unread,
Mar 16, 2017, 11:52:16 PM3/16/17
to stephane brossier, Kill Bill users mailing-list
Thank you Stephane,

In my scenario the catalog entries were not removed from database. 

steps:-
A. Add the previously attached catalog.xml file using 1.0/kb/catalog API
B. successfully added the catalog
C. with or without change the catalog.xml file, again call the 1.0/kb/catalog API
D. It throws this error
        {
              "className": "org.killbill.billing.catalog.api.CatalogApiException",
              "code": 2080,
              "message": "Invalid catalog for tenant : 4",
              "causeClassName": null,
              "causeMessage": null,
              "stackTrace": []
      }

Observed that after the step A, in database the column is_active set to 1. After clear the cache using another API 1.0/kb/admin/cache/tenants?tenantApiKey=satish, it allows me to update the catalog file.

This issue I am facing..


Thanks,
Satish


Joal

unread,
May 24, 2017, 6:35:21 AM5/24/17
to Kill Bill users mailing-list, cynic...@gmail.com
Hi having similar problem with killbill 0.18.7
  1. try to update the catalog and it get the same error below
  2. try to clear the cash and restart , try to use direct api call and from kaui - same error below
  3. try to delete the tenant_kvs rows 
  4. try to update the xml filed in tenatn_kvs - this create 500 error  
the catalog can be upload only in the first time when creating the tenant 

please advise how can we update catalog ?
thanks.
log below 


org.killbill.billing.catalog.api.CatalogApiException: Invalid catalog for tenant : 3

at org.killbill.billing.catalog.api.user.DefaultCatalogUserApi.uploadCatalog(DefaultCatalogUserApi.java:114)

at org.killbill.billing.util.glue.KillbillApiAopModule$ProfilingMethodInterceptor$1.execute(KillbillApiAopModule.java:52)

at org.killbill.commons.profiling.Profiling.executeWithProfiling(Profiling.java:33)

at org.killbill.billing.util.glue.KillbillApiAopModule$ProfilingMethodInterceptor.invoke(KillbillApiAopModule.java:49)

at org.killbill.billing.util.security.AopAllianceMethodInvocationAdapter.proceed(AopAllianceMethodInvocationAdapter.java:45)

at org.apache.shiro.authz.aop.AuthorizingAnnotationMethodInterceptor.invoke(AuthorizingAnnotationMethodInterceptor.java:68)

at org.killbill.billing.util.security.AopAllianceMethodInterceptorAdapter.invoke(AopAllianceMethodInterceptorAdapter.java:32)

at org.killbill.billing.jaxrs.resources.CatalogResource.uploadCatalogXml(CatalogResource.java:113)

at org.killbill.commons.skeleton.metrics.TimedResourceInterceptor.invoke(TimedResourceInterceptor.java:67)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)

at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205)

at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)

at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)

at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)

at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)

at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)

at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542)

at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473)

at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419)

at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409)

at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409)

at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558)

at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)

To unsubscribe from this group and stop receiving emails from it, send an email to killbilling-us...@googlegroups.com.
To post to this group, send email to killbill...@googlegroups.com.

Pierre-Alexandre Meyer

unread,
May 24, 2017, 10:06:15 AM5/24/17
to Joal, Kill Bill users mailing-list
Hi Joal,

If you don't want Kill Bill to use the default test catalog upon tenant creation, you need specify the following query parameter: 'useGlobalDefault=false':

curl -v \
    -X POST \
    -u admin:password \
    -H 'Content-Type: application/json' \
    -H 'X-Killbill-CreatedBy: admin' \
    -d '{"apiKey": "bob", "apiSecret": "lazar"}' \

Note that if you are using the KAUI tenant screen to create your tenant, it will do that automatically for you. 

At this point, you have a tenant with no default catalog and you can then proceed with uploading your XML catalog or use the UI (or API) to add 'simple' plans.

Can you confirm using useGlobalDefault=false solves your issue?

To unsubscribe from this group and stop receiving emails from it, send an email to killbilling-users+unsubscribe@googlegroups.com.
To post to this group, send email to killbilling-users@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.



--
Pierre

Joal

unread,
May 24, 2017, 10:31:15 AM5/24/17
to Kill Bill users mailing-list, zat...@gmail.com
hi thank for the inputs
unfortunately it did not solve it
the first  catalog one was upload successfully the second time all the time  - did not
the catalog.xml is ok 
also try with killbill 18.5 using direct call from api - same problem
see logs:
 

{ "className": "org.killbill.billing.catalog.api.CatalogApiException", "code": 2080, "message": "Invalid catalog for tenant : 4", "causeClassName": null, "causeMessage": null, "stackTrace": [] }


2017-05-24T14:28:32,971+0000 lvl='INFO', log='XMLLoader', th='catalina-exec-6', xff='', rId='bb9066eb-b28d-490a-9885-5e5dc28db9ff', aRId='', tRId='4', Errors: 0 for dummy

2017-05-24T14:28:32,971+0000 lvl='INFO', log='DefaultCatalogUserApi', th='catalina-exec-6', xff='', rId='bb9066eb-b28d-490a-9885-5e5dc28db9ff', aRId='', tRId='4', Failed to load new catalog version: Catalog version for effectiveDate 'Fri Feb 08 00:00:00 GMT 2013' already exists [dummy] (class org.killbill.billing.catalog.StandaloneCatalog:)


2017-05-24T14:28:32,973+0000 lvl='WARN', log='LoggingResponse', th='catalina-exec-6', xff='', rId='bb9066eb-b28d-490a-9885-5e5dc28db9ff', aRId='', tRId='4', Bad request

org.killbill.billing.catalog.api.CatalogApiException: Invalid catalog for tenant : 4

at org.killbill.billing.catalog.api.user.DefaultCatalogUserApi.uploadCatalog(DefaultCatalogUserApi.java:126)

at org.killbill.billing.util.glue.KillbillApiAopModule$ProfilingMethodInterceptor$1.execute(KillbillApiAopModule.java:52)

at org.killbill.commons.profiling.Profiling.executeWithProfiling(Profiling.java:33)

at org.killbill.billing.util.glue.KillbillApiAopModule$ProfilingMethodInterceptor.invoke(KillbillApiAopModule.java:49)

at org.killbill.billing.util.security.AopAllianceMethodInvocationAdapter.proceed(AopAllianceMethodInvocationAdapter.java:45)

at org.apache.shiro.authz.aop.AuthorizingAnnotationMethodInterceptor.invoke(AuthorizingAnnotationMethodInterceptor.java:68)

at org.killbill.billing.util.security.AopAllianceMethodInterceptorAdapter.invoke(AopAllianceMethodInterceptorAdapter.java:32)

at org.killbill.billing.jaxrs.resources.CatalogResource.uploadCatalogXml(CatalogResource.java:113)

at org.killbill.commons.skeleton.metrics.TimedResourceInterceptor.invoke(TimedResourceInterceptor.java:67)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)

at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205)

at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)

at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)

at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)

at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)

at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)

at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542)

at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473)

at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419)

at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409)

at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409)

at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:540)

at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:715)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)




--
Pierre

Joal

unread,
May 24, 2017, 10:38:12 AM5/24/17
to Kill Bill users mailing-list, zat...@gmail.com
problem solved
it was 
Catalog version for effectiveDate 'Fri Feb 08 00:00:00 GMT 2013' already exists [dummy] 

need to move to the future

many thank!!

Pierre-Alexandre Meyer

unread,
May 24, 2017, 11:48:18 AM5/24/17
to Joal, Kill Bill users mailing-list
Awesome!

To unsubscribe from this group and stop receiving emails from it, send an email to killbilling-users+unsubscribe@googlegroups.com.
To post to this group, send email to killbilling-users@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.



--
Pierre

Tiago Baccala

unread,
Jun 14, 2021, 8:03:11 PM6/14/21
to Kill Bill users mailing-list
Hello Pierre and Stephano,

I get the error below when I import XML both in KAUI or through APIs.

{ "className": "org.killbill.billing.catalog.api.CatalogApiException", "code": 2080, "message": "Invalid catalog for tenant : 2", "causeClassName": "javax.xml.bind.UnmarshalException", "causeMessage": null, "stackTrace": [] }

What do I need to do ? See the catalog.xml below.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <catalogs>
    <versions>
      <version>
        <effectiveDate>2021-06-15T23:39:11Z</effectiveDate>
        <catalogName>DEFAULT</catalogName>
        <currencies>
          <currency>BRL</currency>
        </currencies>
        <units/>
        <products>
          <product name="a" prettyName="a">
            <category>BASE</category>
            <included/>
            <available/>
            <limits/>
          </product>
        </products>
        <rules>
          <changePolicy>
            <changePolicyCase>
              <policy>IMMEDIATE</policy>
            </changePolicyCase>
          </changePolicy>
          <changeAlignment>
            <changeAlignmentCase>
              <alignment>START_OF_BUNDLE</alignment>
            </changeAlignmentCase>
          </changeAlignment>
          <cancelPolicy>
            <cancelPolicyCase>
              <policy>IMMEDIATE</policy>
            </cancelPolicyCase>
          </cancelPolicy>
          <createAlignment>
            <createAlignmentCase>
              <alignment>START_OF_BUNDLE</alignment>
            </createAlignmentCase>
          </createAlignment>
          <billingAlignment>
            <billingAlignmentCase>
              <alignment>ACCOUNT</alignment>
            </billingAlignmentCase>
          </billingAlignment>
          <priceList>
            <priceListCase>
              <toPriceList>DEFAULT</toPriceList>
            </priceListCase>
          </priceList>
        </rules>
        <plans>
          <plan name="a-plan" prettyName="a-plan">
            <product>a</product>
            <recurringBillingMode>IN_ADVANCE</recurringBillingMode>
            <initialPhases/>
            <finalPhase type="EVERGREEN">
              <duration>
                <unit>UNLIMITED</unit>
                <number>-1</number>
              </duration>
              <recurring>
                <billingPeriod>MONTHLY</billingPeriod>
                <recurringPrice>
                  <price>
                    <currency>BRL</currency>
                    <value>0</value>
                  </price>
                </recurringPrice>
              </recurring>
              <usages/>
            </finalPhase>
            <plansAllowedInBundle>-1</plansAllowedInBundle>
          </plan>
        </plans>
        <priceLists>
          <defaultPriceList name="DEFAULT" prettyName="DEFAULT">
            <plans>
              <plan>a-plan</plan>
            </plans>
          </defaultPriceList>
        </priceLists>
      </version>
    </versions>
    <catalogName>DEFAULT</catalogName>
  </catalogs>

Thanks
Tiago

Pierre-Alexandre Meyer

unread,
Jun 15, 2021, 3:42:07 PM6/15/21
to Tiago Baccala, Kill Bill users mailing-list
Hi Tiago,

The XML looks invalid. You can use our free online tool to help edit and validate the XML: https://killbill.io/blog/kill-bill-cloud-subscription-billing-testing-made-easy/

Hope this helps,




--
Pierre

Tiago Baccala

unread,
Jun 15, 2021, 4:10:58 PM6/15/21
to Pierre-Alexandre Meyer, Kill Bill users mailing-list
Thank you !! I will test it now. 

--
Tiago Baccalá

Em 15 de jun. de 2021, à(s) 16:42, Pierre-Alexandre Meyer <pie...@kill-bill.org> escreveu:



Jayson Osuna

unread,
Jul 23, 2021, 2:35:44 AM7/23/21
to Kill Bill users mailing-list
Hello, 

I'm using 0.18.1 version of the load tool, but I'm getting this error:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/JAXBContext
        at org.killbill.xmlloader.XMLLoader.unmarshaller(XMLLoader.java:104)
        at org.killbill.xmlloader.XMLLoader.getObjectFromStream(XMLLoader.java:66)
        at org.killbill.xmlloader.XMLLoader.getObjectFromUri(XMLLoader.java:58)
        at org.killbill.billing.catalog.LoadCatalog.main(LoadCatalog.java:33)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBContext
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:636)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:182)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519)
        ... 4 more

Am I missing something?

Thank you!

jay...@methodmaker.co.nz

unread,
Jul 23, 2021, 4:05:07 AM7/23/21
to Kill Bill users mailing-list

I tried the latest version(ie 0.22.24) as well and still gave the same error:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".

SLF4J: Defaulting to no-operation (NOP) logger implementation

SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

Exception in thread "main" javax.xml.bind.JAXBException: Implementation of JAXB-API has not been found on module path or classpath.

- with linked exception:

[java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory]

        at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:232)

        at javax.xml.bind.ContextFinder.find(ContextFinder.java:375)

        at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:691)

        at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:632)

        at org.killbill.xmlloader.XMLLoader.unmarshaller(XMLLoader.java:108)

        at org.killbill.xmlloader.XMLLoader.getObjectFromStream(XMLLoader.java:68)

        at org.killbill.xmlloader.XMLLoader.getObjectFromUri(XMLLoader.java:60)

        at org.killbill.billing.catalog.LoadCatalog.main(LoadCatalog.java:33)

Caused by: java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory

        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:636)

        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:182)

        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519)

        at javax.xml.bind.ServiceLoaderUtil.nullSafeLoadClass(ServiceLoaderUtil.java:92)

        at javax.xml.bind.ServiceLoaderUtil.safeLoadClass(ServiceLoaderUtil.java:125)

        at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:230)

        ... 7 more

Pierre-Alexandre Meyer

unread,
Jul 23, 2021, 4:20:33 AM7/23/21
to Jayson Osuna, Kill Bill users mailing-list
Hi Jayson,

I suspect you are running a 11+ JVM. Make sure you are using 1.8 or use our online validator (https://killbill.io/blog/kill-bill-cloud-subscription-billing-testing-made-easy/).

Kind regards,

jay...@methodmaker.co.nz

unread,
Jul 23, 2021, 4:25:30 AM7/23/21
to Pierre-Alexandre Meyer, Kill Bill users mailing-list

I’m trying to register but it shows me this message:

image001.png

Pierre-Alexandre Meyer

unread,
Jul 23, 2021, 4:31:13 AM7/23/21
to Jayson Osuna, Kill Bill users mailing-list
It looks like the email your signing-up with is already registered with the system.

I would recommend using a different address.

Hope this helps,
--
Pierre

jay...@methodmaker.co.nz

unread,
Jul 23, 2021, 4:39:02 AM7/23/21
to Pierre-Alexandre Meyer, Kill Bill users mailing-list

Upon validating in the Catalog editor, it shows “Request failed with status code 403”.

image001.png

Pierre-Alexandre Meyer

unread,
Jul 23, 2021, 4:43:44 AM7/23/21
to Jayson Osuna, Kill Bill users mailing-list
It looks like the Cloudflare firewall is marking your IP as suspicious.

Try sending the XML without the initial "<?xml version="1.0" encoding="UTF-8" standalone="no"?>", to see if it helps (i.e. just send the catalog starting with <catalog ...).
--
Pierre

jay...@methodmaker.co.nz

unread,
Jul 23, 2021, 5:04:58 AM7/23/21
to Pierre-Alexandre Meyer, Kill Bill users mailing-list

Still the same though…

image001.png
image002.png

Pierre-Alexandre Meyer

unread,
Jul 23, 2021, 5:08:42 AM7/23/21
to Jayson Osuna, Kill Bill users mailing-list
At this point, I would suggest to try to set up the validator tool locally, using Java 8.

In the meantime, can you share with us the catalog, so we can see if there is something obviously wrong / if I can unblock you?
--
Pierre

jay...@methodmaker.co.nz

unread,
Jul 23, 2021, 5:10:17 AM7/23/21
to Pierre-Alexandre Meyer, Kill Bill users mailing-list

Here’s the catalog.

 

Thank you!

image001.png
image002.png
catalog.xml

Pierre-Alexandre Meyer

unread,
Jul 23, 2021, 5:24:04 AM7/23/21
to Jayson Osuna, Kill Bill users mailing-list
You are missing the plans in the respective pricelists -- make sure each plan name has a corresponding entry in the priceLists sections.

Cheers,
--
Pierre

Jayson Osuna

unread,
Jul 25, 2021, 11:20:46 PM7/25/21
to Kill Bill users mailing-list
Thank you, Pierre.

I've made some changes. Could you validate our catalog again, please.

Smart Farm NZ Catalog.xml
Reply all
Reply to author
Forward
0 new messages