Problem with persistence in OH3

Hi,

did you define an alternative data type for numbers? By default this is a double value. You can find the configuration in your jdbc.cfg file around line 48:

48 #sqltype.NUMBER        =   DOUBLE

I posted my entire jdbc.cfg above (the grep I used is only for removing comment lines). So no, nothing like that.

Alright. Then we have to create another small path to change this line of code:

Ok. Will you do a PR on that?

I don’t really understand though, wouldn’t this happen to anyone trying to persist a QuantityType value using jdbc? Just wondering why I seem to be the only one affected…

It happens, I also have problems with influxDB disease, but it seems, except me, no one experiences them.

Done.

1 Like

I ran into similar problems:

2020-12-28 16:44:57.771 [WARN ] [org.openhab.core.items.GenericItem  ] - failed notifying listener 'org.openhab.core.persistence.internal.PersistenceManagerImpl@7ceca5' about state update of item AutoBedtime: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader 'bootstrap')
java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader 'bootstrap')
	at org.openhab.persistence.jdbc.db.JdbcMysqlDAO.doPingDB(JdbcMysqlDAO.java:93) ~[?:?]
	at org.openhab.persistence.jdbc.internal.JdbcMapper.pingDB(JdbcMapper.java:65) ~[?:?]
	at org.openhab.persistence.jdbc.internal.JdbcMapper.checkDBAccessability(JdbcMapper.java:203) ~[?:?]
	at org.openhab.persistence.jdbc.internal.JdbcPersistenceService.store(JdbcPersistenceService.java:133) ~[?:?]
	at org.openhab.core.persistence.internal.PersistenceManagerImpl.handleStateEvent(PersistenceManagerImpl.java:152) ~[?:?]
	at org.openhab.core.persistence.internal.PersistenceManagerImpl.stateChanged(PersistenceManagerImpl.java:473) ~[?:?]
	at org.openhab.core.items.GenericItem.lambda$1(GenericItem.java:259) [bundleFile:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
	at java.lang.Thread.run(Thread.java:834) [?:?]

In my case, a simple cast from int to long does not seem to be possible. This happens for the jdbc persistence mysql, mariadb and sqlite and completely prevents me from persisting my data.

OH3 on RPi4 4GB, fresh installation.

jdbc.cfg:

url=jdbc:mysql://localhost:3306/openhab?serverTimezone=Europe/Berlin
user=user
password=password
sqltype.STRING=TEXT
tableUseRealItemNames=true
enableLogTime=true

User is created, access is granted in all ways, tested multiple times…

jdbc.persist:

Strategies {
	everyMinute	    : "0 * * * * ?"
	every5Minutes   : "0 */5 * * * ?"
    every10Minutes  : "0 */10 * * * ?"
    every15Minutes  : "0 */15 * * * ?"
   	everyHour       : "0 0 * * * ?"
   	everyDay        : "0 0 0 * * ?"
   	default = everyChange, restoreOnStartup
}

Items {
    // Global settings
    AutoBedtime : strategy = everyChange, restoreOnStartup
}

The item AutoBedtime is a simple switch. What am i missing here?

Hi Stephan,

Your issue looks a little bit different. The CCE is thrown in a different line of code. Can you provide a DEBUG log? Would be nice to know if your connection is really working.

Do you see something like this in your log file:

JDBC::openConnection: Driver is available::Yank setupDataSource

Hi Christoph!

Here’s what my log shows if I set the loglevel of the jdbc binding to DEBUG:

14:31:12.639 [DEBUG] [.jdbc.internal.JdbcPersistenceService] - JDBC::activate: persistence service activated
14:31:12.647 [DEBUG] [.jdbc.internal.JdbcPersistenceService] - JDBC::updateConfig
14:31:12.661 [DEBUG] [tence.jdbc.internal.JdbcConfiguration] - JDBC::JdbcConfiguration
14:31:12.667 [DEBUG] [tence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: configuration size = 14
14:31:12.680 [DEBUG] [tence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: user=openhab
14:31:12.686 [DEBUG] [tence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: password exists? true
14:31:12.695 [DEBUG] [tence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: url=jdbc:mariadb://127.0.0.1:3306/openhab?serverTimezone=Europe/Berlin
14:31:12.700 [DEBUG] [tence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: found serviceName = 'mariadb'
14:31:12.705 [DEBUG] [tence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: Init Data Access Object Class: 'org.openhab.persistence.jdbc.db.JdbcMariadbDAO'
14:31:12.720 [DEBUG] [enhab.persistence.jdbc.db.JdbcBaseDAO] - JDBC::initSqlTypes: Initialize the type array
14:31:12.725 [DEBUG] [enhab.persistence.jdbc.db.JdbcBaseDAO] - JDBC::initSqlQueries: 'JdbcMariadbDAO'
14:31:12.738 [DEBUG] [ab.persistence.jdbc.db.JdbcMariadbDAO] - JDBC::initSqlTypes: Initialize the type array
14:31:12.744 [DEBUG] [ab.persistence.jdbc.db.JdbcMariadbDAO] - JDBC::initSqlQueries: 'JdbcMariadbDAO'
14:31:12.748 [DEBUG] [tence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: dBDAO ClassName=org.openhab.persistence.jdbc.db.JdbcMariadbDAO
14:31:12.754 [DEBUG] [tence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: set sqlTypes: itemType=STRINGITEM value=TEXT
14:31:12.759 [DEBUG] [tence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: errReconnectThreshold=1
14:31:12.763 [DEBUG] [tence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: enableLogTime false
14:31:12.772 [DEBUG] [tence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: load JDBC-driverClass was successful: 'org.mariadb.jdbc.Driver'
14:31:12.777 [DEBUG] [tence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: configuration complete. service=jdbc
14:31:12.781 [DEBUG] [.persistence.jdbc.internal.JdbcMapper] - JDBC::pingDB
14:31:12.786 [DEBUG] [.persistence.jdbc.internal.JdbcMapper] - JDBC::openConnection isDriverAvailable: true
14:31:12.790 [INFO ] [.persistence.jdbc.internal.JdbcMapper] - JDBC::openConnection: Driver is available::Yank setupDataSource
14:31:13.161 [DEBUG] [tence.jdbc.internal.JdbcConfiguration] - JDBC::setDbConnected true
14:31:13.168 [DEBUG] [ab.persistence.jdbc.db.JdbcMariadbDAO] - JDBC::initAfterFirstDbConnection: Initializing step, after db is connected.
14:31:13.225 [DEBUG] [hab.persistence.jdbc.utils.DbMetaData] - dbMajorVersion = '10'
14:31:13.230 [DEBUG] [hab.persistence.jdbc.utils.DbMetaData] - dbMinorVersion = '3'
14:31:13.234 [DEBUG] [hab.persistence.jdbc.utils.DbMetaData] - driverMajorVersion = '1'
14:31:13.239 [DEBUG] [hab.persistence.jdbc.utils.DbMetaData] - driverMinorVersion = '3'
14:31:13.243 [DEBUG] [hab.persistence.jdbc.utils.DbMetaData] - dbProductName = 'MySQL'
14:31:13.248 [DEBUG] [hab.persistence.jdbc.utils.DbMetaData] - dbProductVersion = '10.3.27-MariaDB-0+deb10u1'
14:31:13.252 [DEBUG] [tence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: set sqlTypes: itemType=STRINGITEM value=TEXT
14:31:13.257 [DEBUG] [.persistence.jdbc.internal.JdbcMapper] - JDBC::pingDB asking db for name as absolutely first db action, after connection is established.
14:31:13.377 [DEBUG] [.persistence.jdbc.internal.JdbcMapper] - JDBC::checkDBAcessability, first try connection: true
14:31:13.381 [DEBUG] [.jdbc.internal.JdbcPersistenceService] - JDBC::getName: returning name 'jdbc' for queryable persistence service.
14:31:13.386 [DEBUG] [.jdbc.internal.JdbcPersistenceService] - JDBC::updateConfig: configuration complete for service=jdbc.
14:31:13.390 [DEBUG] [.jdbc.internal.JdbcPersistenceService] - JDBC::getName: returning name 'jdbc' for queryable persistence service.
14:31:13.395 [DEBUG] [.jdbc.internal.JdbcPersistenceService] - JDBC::getName: returning name 'jdbc' for queryable persistence service.
14:31:13.399 [DEBUG] [.jdbc.internal.JdbcPersistenceService] - JDBC::getName: returning name 'jdbc' for queryable persistence service.
14:31:13.404 [DEBUG] [.jdbc.internal.JdbcPersistenceService] - JDBC::getName: returning name 'jdbc' for queryable persistence service.
14:31:13.408 [DEBUG] [.jdbc.internal.JdbcPersistenceService] - JDBC::getName: returning name 'jdbc' for queryable persistence service.
14:31:13.421 [DEBUG] [.jdbc.internal.JdbcPersistenceService] - JDBC::getName: returning name 'jdbc' for queryable persistence service.
14:33:03.423 [INFO ] [openhab.event.ItemCommandEvent       ] - Item 'AutoBedtime' received command ON
14:33:03.432 [DEBUG] [.persistence.jdbc.internal.JdbcMapper] - JDBC::pingDB
14:33:03.439 [INFO ] [openhab.event.ItemStateChangedEvent  ] - Item 'AutoBedtime' changed from OFF to ON
14:33:03.441 [DEBUG] [.persistence.jdbc.internal.JdbcMapper] - JDBC::openConnection isDriverAvailable: true
14:33:03.451 [WARN ] [org.openhab.core.items.GenericItem   ] - failed notifying listener 'org.openhab.core.persistence.internal.PersistenceManagerImpl@c2231a' about state update of item AutoBedtime: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader 'bootstrap')
java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader 'bootstrap')
	at org.openhab.persistence.jdbc.db.JdbcMariadbDAO.doPingDB(JdbcMariadbDAO.java:90) ~[?:?]
	at org.openhab.persistence.jdbc.internal.JdbcMapper.pingDB(JdbcMapper.java:65) ~[?:?]
	at org.openhab.persistence.jdbc.internal.JdbcMapper.checkDBAccessability(JdbcMapper.java:203) ~[?:?]
	at org.openhab.persistence.jdbc.internal.JdbcPersistenceService.store(JdbcPersistenceService.java:133) ~[?:?]
	at org.openhab.core.persistence.internal.PersistenceManagerImpl.handleStateEvent(PersistenceManagerImpl.java:152) ~[?:?]
	at org.openhab.core.persistence.internal.PersistenceManagerImpl.stateChanged(PersistenceManagerImpl.java:473) ~[?:?]
	at org.openhab.core.items.GenericItem.lambda$1(GenericItem.java:259) [bundleFile:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
	at java.lang.Thread.run(Thread.java:834) [?:?]

Is that what you asked for? As you can see, the line you mentioned appears. From my point of view this is not an issue with the DB, as I double checked that the connection is possible and the user is allowed to access to it. But no table structure is created at all:

[14:40:05] openhabian@openhab:~$ mariadb -u openhab -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 86
Server version: 10.3.27-MariaDB-0+deb10u1 Raspbian 10

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> use openhab;
Database changed
MariaDB [openhab]> show tables;
Empty set (0.001 sec)

MariaDB [openhab]>

In the meantime i did a fresh clean installation of OH3 using the latest image. I do not use an SD card in my Pi as i wanted to have my DB on the same device. Everything is installed on an USB connected SSD.

Any support here is very welcome :confused:

You are using MariaDB. Why are you trying to connect via MySQL driver? Can you change your connection string to:

url=jdbc:mariadb://localhost:3306/openhab?serverTimezone=Europe/Berlin

It doesn’t matter. This is my current setup, with which I generated the log above:

url=jdbc:mariadb://127.0.0.1:3306/openhab?serverTimezone=Europe/Berlin
user=openhab
password=passwordcontaining;char
reconnectCnt=1
waitTimeout=28800
localtime=true
sqltype.string=TEXT

I have the same behavior with the mysql connector and a MySQL database. By the way also if I just use a SQLite persistence.

I receive the following Warning and have no idea to resolve it:

*2021-01-02 15:51:35.215 [WARN ] [persistence.jdbc.internal.JdbcMapper] - JDBC::openConnection: no driver available!

2021-01-02 15:51:35.219 [WARN ] [persistence.jdbc.internal.JdbcMapper] - JDBC::openConnection: no driver available!

2021-01-02 15:51:35.222 [WARN ] [jdbc.internal.JdbcPersistenceService] - JDBC::store: No connection to database. Cannot persist item ‘Shelly1Gartenhaus_Signalstarke (Type=NumberItem, State=1, Label=Signalstärke, Category=073wifi, Tags=[Point], Groups=[Shelly1Gartenhaus])’! Will retry connecting to database when error count:0 equals errReconnectThreshold:0*

@shussong I am afraid I am out of ideas right now. It looks like the binding fails while “sending a ping” to the database to check if the connection is available. The “ping” is a some SELECT 1 statement. The return value - in general the 1 - should be cast to a Long for MariaDB and MySQL DBs.

@Walki Can you provide a DEBUG log? Would be nice to know if your connection is really working.

Do you see something like this in your log file:

JDBC::openConnection: Driver is available::Yank setupDataSource

That’s the typical Novice: Prepared to do everything. But know nothing. I am googling every Linux command. But tell where to get these information. I will do my best.
Openhab.log:

Blockquote2021-01-02 21:41:42.771 [WARN ] [persistence.jdbc.internal.JdbcMapper] - JDBC::openConnection: no driver available!
2021-01-02 21:41:42.774 [WARN ] [persistence.jdbc.internal.JdbcMapper] - JDBC::openConnection: no driver available!
2021-01-02 21:41:42.777 [WARN ] [jdbc.internal.JdbcPersistenceService] - JDBC::store: No connection to database. Cannot persist item ‘Raspberrymatic_Zuletztgesehen (Type=DateTimeItem, State=2021-01-02T21:41:42.765+0100, Label=Zuletzt gesehen, Category=, Tags=[Point], Groups=[WA_Devices_Online])’! Will retry connecting to database when error count:0 equals errReconnectThreshold:0
==> /var/log/openhab/events.log <==
2021-01-02 21:41:42.777 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item ‘Raspberrymatic_Zuletztgesehen’ changed from 2021-01-02T21:40:42.405+0100 to 2021-01-02T21:41:42.765+0100

Installed is only JDBC Persistence mySQL, MapDB Persistence und RR4Dj Persistence.

In Section ‘JDBC Persistence Service’: Should here anything configured? The Database URL is missing by the way… In OH2.5 I never configured anything there.

In front of the error message in my post ago I receive the following error:

2021-01-02 21:52:27.981 [ERROR] [nal.common.AbstractInvocationHandler] - An error occurred while calling method ‘ThingHandler.thingUpdated()’ on ‘org.openhab.binding.hpprinter.internal.HPPrinterHandler@588693’: Invalid URI host: null (authority: fe80:0:0:0:121f:74ff:fe46:a076)

java.lang.IllegalArgumentException: Invalid URI host: null (authority: fe80:0:0:0:121f:74ff:fe46:a076)

at org.eclipse.jetty.client.HttpClient.checkHost(HttpClient.java:510) ~[?:?]

at org.eclipse.jetty.client.HttpClient.newHttpRequest(HttpClient.java:495) ~[?:?]

at org.eclipse.jetty.client.HttpClient.newRequest(HttpClient.java:453) ~[?:?]

at org.eclipse.jetty.client.HttpClient.newRequest(HttpClient.java:442) ~[?:?]

at org.openhab.binding.hpprinter.internal.api.HPWebServerClient.fetchData(HPWebServerClient.java:105) ~[?:?]

at org.openhab.binding.hpprinter.internal.api.HPWebServerClient.getProductUsageFeatures(HPWebServerClient.java:78) ~[?:?]

at org.openhab.binding.hpprinter.internal.HPPrinterBinder.dynamicallyAddChannels(HPPrinterBinder.java:121) ~[?:?]

at org.openhab.binding.hpprinter.internal.HPPrinterHandler.initialize(HPPrinterHandler.java:73) ~[?:?]

at org.openhab.core.thing.binding.BaseThingHandler.thingUpdated(BaseThingHandler.java:152) ~[?:?]

at org.openhab.binding.hpprinter.internal.HPPrinterHandler.thingUpdated(HPPrinterHandler.java:54) ~[?:?]

at jdk.internal.reflect.GeneratedMethodAccessor104.invoke(Unknown Source) ~[?:?]

at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]

at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]

at org.openhab.core.internal.common.AbstractInvocationHandler.invokeDirect(AbstractInvocationHandler.java:154) [bundleFile:?]

at org.openhab.core.internal.common.Invocation.call(Invocation.java:52) [bundleFile:?]

at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]

at java.lang.Thread.run(Thread.java:834) [?:?]

Yes, of course. You at least should add an URL, a username and a password.

wrt to HP Printer Binding I cannot help you very much. But it sounds like you have to add an URL over there too.

This is what it looks like when I switch to the database, which works perfectly in OH2.5:

2021-01-04 17:25:49.959 [DEBUG] [jdbc.internal.JdbcPersistenceService] - JDBC::activate: persistence service activated
2021-01-04 17:25:49.961 [DEBUG] [jdbc.internal.JdbcPersistenceService] - JDBC::updateConfig
2021-01-04 17:25:49.963 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::JdbcConfiguration
2021-01-04 17:25:49.965 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: configuration size = 17
2021-01-04 17:25:49.968 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: user=u58459
2021-01-04 17:25:49.970 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: password exists? true
2021-01-04 17:25:49.972 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: url=jdbc:mariadb://mysql07.manitu.net:3306/db58459?serverTimezone=Europe/Berlin
2021-01-04 17:25:49.973 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: found serviceName = 'mariadb'
2021-01-04 17:25:49.975 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: Init Data Access Object Class: 'org.openhab.persistence.jdbc.db.JdbcMariadbDAO'
2021-01-04 17:25:49.977 [DEBUG] [nhab.persistence.jdbc.db.JdbcBaseDAO] - JDBC::initSqlTypes: Initialize the type array
2021-01-04 17:25:49.979 [DEBUG] [nhab.persistence.jdbc.db.JdbcBaseDAO] - JDBC::initSqlQueries: 'JdbcMariadbDAO'
2021-01-04 17:25:49.981 [DEBUG] [b.persistence.jdbc.db.JdbcMariadbDAO] - JDBC::initSqlTypes: Initialize the type array
2021-01-04 17:25:49.983 [DEBUG] [b.persistence.jdbc.db.JdbcMariadbDAO] - JDBC::initSqlQueries: 'JdbcMariadbDAO'
2021-01-04 17:25:49.985 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: dBDAO ClassName=org.openhab.persistence.jdbc.db.JdbcMariadbDAO
2021-01-04 17:25:49.987 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: set sqlTypes: itemType=STRINGITEM value=TEXT
2021-01-04 17:25:49.989 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: errReconnectThreshold=1
2021-01-04 17:25:49.991 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: tableUseRealItemNames=true
2021-01-04 17:25:49.993 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: rebuildTableNames=false
2021-01-04 17:25:49.995 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: enableLogTime false
2021-01-04 17:25:49.997 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: load JDBC-driverClass was successful: 'org.mariadb.jdbc.Driver'
2021-01-04 17:25:49.999 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: configuration complete. service=jdbc
2021-01-04 17:25:50.000 [DEBUG] [persistence.jdbc.internal.JdbcMapper] - JDBC::pingDB
2021-01-04 17:25:50.002 [DEBUG] [persistence.jdbc.internal.JdbcMapper] - JDBC::openConnection isDriverAvailable: true
2021-01-04 17:25:50.004 [INFO ] [persistence.jdbc.internal.JdbcMapper] - JDBC::openConnection: Driver is available::Yank setupDataSource
2021-01-04 17:25:50.101 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::setDbConnected true
2021-01-04 17:25:50.103 [DEBUG] [b.persistence.jdbc.db.JdbcMariadbDAO] - JDBC::initAfterFirstDbConnection: Initializing step, after db is connected.
2021-01-04 17:25:50.162 [DEBUG] [ab.persistence.jdbc.utils.DbMetaData] - dbMajorVersion = '10'
2021-01-04 17:25:50.164 [DEBUG] [ab.persistence.jdbc.utils.DbMetaData] - dbMinorVersion = '2'
2021-01-04 17:25:50.167 [DEBUG] [ab.persistence.jdbc.utils.DbMetaData] - driverMajorVersion = '1'
2021-01-04 17:25:50.169 [DEBUG] [ab.persistence.jdbc.utils.DbMetaData] - driverMinorVersion = '3'
2021-01-04 17:25:50.171 [DEBUG] [ab.persistence.jdbc.utils.DbMetaData] - dbProductName = 'MySQL'
2021-01-04 17:25:50.174 [DEBUG] [ab.persistence.jdbc.utils.DbMetaData] - dbProductVersion = '10.2.36-MariaDB-log'
2021-01-04 17:25:50.176 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: set sqlTypes: itemType=STRINGITEM value=TEXT
2021-01-04 17:25:50.179 [DEBUG] [persistence.jdbc.internal.JdbcMapper] - JDBC::pingDB asking db for name as absolutely first db action, after connection is established.
2021-01-04 17:25:50.263 [DEBUG] [persistence.jdbc.internal.JdbcMapper] - JDBC::checkDBAcessability, first try connection: true
2021-01-04 17:25:50.265 [DEBUG] [jdbc.internal.JdbcPersistenceService] - JDBC::getName: returning name 'jdbc' for queryable persistence service.
2021-01-04 17:25:50.267 [DEBUG] [jdbc.internal.JdbcPersistenceService] - JDBC::updateConfig: configuration complete for service=jdbc.
2021-01-04 17:25:50.270 [DEBUG] [jdbc.internal.JdbcPersistenceService] - JDBC::getName: returning name 'jdbc' for queryable persistence service.
2021-01-04 17:25:50.272 [DEBUG] [jdbc.internal.JdbcPersistenceService] - JDBC::getName: returning name 'jdbc' for queryable persistence service.
2021-01-04 17:25:50.274 [DEBUG] [jdbc.internal.JdbcPersistenceService] - JDBC::getName: returning name 'jdbc' for queryable persistence service.
2021-01-04 17:25:50.276 [DEBUG] [jdbc.internal.JdbcPersistenceService] - JDBC::getName: returning name 'jdbc' for queryable persistence service.
2021-01-04 17:25:50.278 [DEBUG] [jdbc.internal.JdbcPersistenceService] - JDBC::getName: returning name 'jdbc' for queryable persistence service.
2021-01-04 17:25:50.289 [DEBUG] [jdbc.internal.JdbcPersistenceService] - JDBC::getName: returning name 'jdbc' for queryable persistence service.
2021-01-04 17:26:29.940 [DEBUG] [persistence.jdbc.internal.JdbcMapper] - JDBC::pingDB
2021-01-04 17:26:29.942 [DEBUG] [persistence.jdbc.internal.JdbcMapper] - JDBC::openConnection isDriverAvailable: true
2021-01-04 17:26:29.985 [DEBUG] [persistence.jdbc.internal.JdbcMapper] - JDBC::checkDBAcessability, first try connection: true
2021-01-04 17:26:29.986 [WARN ] [jdbc.internal.JdbcPersistenceService] - JDBC::store:  No connection to database. Cannot persist item 'AutoBedtime (Type=SwitchItem, State=OFF, Label=Automatischer Bettmodus, Category=sh_night)'! Will retry connecting to database when error count:0 equals errReconnectThreshold:1

The casting error disappears - but despite the fact that the log says that the connection was successfully established, it somehow loses the connection while trying to write some data. This time I did the configuration in UI, but it doesn’t matter where I do it - the result is always the same.

Still no ideas? :pensive:

Hello,
I have OH3 3.1.0M2 and i can’t get JDBC mariadb to work.
It used to work in OH2.5. Now I have created a new database and I’m keep getting the below errors. I can see connections to the SQL server but I don’t see any entries in database. This is a new database

Any ideas ? :slight_smile:

2021-03-21 20:00:22.527 [WARN ] [org.openhab.core.items.GenericItem ] - failed notifying listener ‘org.openhab.core.persistence.internal.PersistenceManagerImpl@2470dbf0’ about state update of item Current_DateTime: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader ‘bootstrap’)
java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader ‘bootstrap’)
at org.openhab.persistence.jdbc.db.JdbcMariadbDAO.doPingDB(JdbcMariadbDAO.java:92) ~[?:?]
at org.openhab.persistence.jdbc.internal.JdbcMapper.pingDB(JdbcMapper.java:72) ~[?:?]
at org.openhab.persistence.jdbc.internal.JdbcMapper.checkDBAccessability(JdbcMapper.java:211) ~[?:?]
at org.openhab.persistence.jdbc.internal.JdbcPersistenceService.store(JdbcPersistenceService.java:136) ~[?:?]
at org.openhab.core.persistence.internal.PersistenceManagerImpl.handleStateEvent(PersistenceManagerImpl.java:152) ~[?:?]
at org.openhab.core.persistence.internal.PersistenceManagerImpl.stateChanged(PersistenceManagerImpl.java:473) ~[?:?]
at org.openhab.core.items.GenericItem.lambda$1(GenericItem.java:259) [bundleFile:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
at java.lang.Thread.run(Thread.java:834) [?:?]
2021-03-21 20:00:22.840 [WARN ] [org.openhab.core.items.GenericItem ] - failed notifying listener ‘org.openhab.core.persistence.internal.PersistenceManagerImpl@2470dbf0’ about state update of item Sun_Elevation: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader ‘bootstrap’)
java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader ‘bootstrap’)
at org.openhab.persistence.jdbc.db.JdbcMariadbDAO.doPingDB(JdbcMariadbDAO.java:92) ~[?:?]
at org.openhab.persistence.jdbc.internal.JdbcMapper.pingDB(JdbcMapper.java:72) ~[?:?]
at org.openhab.persistence.jdbc.internal.JdbcMapper.checkDBAccessability(JdbcMapper.java:211) ~[?:?]
at org.openhab.persistence.jdbc.internal.JdbcPersistenceService.store(JdbcPersistenceService.java:136) ~[?:?]
at org.openhab.core.persistence.internal.PersistenceManagerImpl.handleStateEvent(PersistenceManagerImpl.java:152) ~[?:?]
at org.openhab.core.persistence.internal.PersistenceManagerImpl.stateChanged(PersistenceManagerImpl.java:473) ~[?:?]
at org.openhab.core.items.GenericItem.lambda$1(GenericItem.java:259) [bundleFile:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
at java.lang.Thread.run(Thread.java:834) [?:?]
2021-03-21 20:00:22.842 [WARN ] [org.openhab.core.items.GenericItem ] - failed notifying listener ‘org.openhab.core.persistence.internal.PersistenceManagerImpl@2470dbf0’ about state update of item Azimuth: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader ‘bootstrap’)
java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader ‘bootstrap’)
at org.openhab.persistence.jdbc.db.JdbcMariadbDAO.doPingDB(JdbcMariadbDAO.java:92) ~[?:?]
at org.openhab.persistence.jdbc.internal.JdbcMapper.pingDB(JdbcMapper.java:72) ~[?:?]
at org.openhab.persistence.jdbc.internal.JdbcMapper.checkDBAccessability(JdbcMapper.java:211) ~[?:?]
at org.openhab.persistence.jdbc.internal.JdbcPersistenceService.store(JdbcPersistenceService.java:136) ~[?:?]
at org.openhab.core.persistence.internal.PersistenceManagerImpl.handleStateEvent(PersistenceManagerImpl.java:152) ~[?:?]
at org.openhab.core.persistence.internal.PersistenceManagerImpl.stateChanged(PersistenceManagerImpl.java:473) ~[?:?]
at org.openhab.core.items.GenericItem.lambda$1(GenericItem.java:259) [bundleFile:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
at java.lang.Thread.run(Thread.java:834) [?:?]
2021-03-21 20:00:22.903 [WARN ] [org.openhab.core.items.GenericItem ] - failed notifying listener ‘org.openhab.core.persistence.internal.PersistenceManagerImpl@2470dbf0’ about state update of item Moon_Elevation: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader ‘bootstrap’)
java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader ‘bootstrap’)
at org.openhab.persistence.jdbc.db.JdbcMariadbDAO.doPingDB(JdbcMariadbDAO.java:92) ~[?:?]
at org.openhab.persistence.jdbc.internal.JdbcMapper.pingDB(JdbcMapper.java:72) ~[?:?]
at org.openhab.persistence.jdbc.internal.JdbcMapper.checkDBAccessability(JdbcMapper.java:211) ~[?:?]
at org.openhab.persistence.jdbc.internal.JdbcPersistenceService.store(JdbcPersistenceService.java:136) ~[?:?]
at org.openhab.core.persistence.internal.PersistenceManagerImpl.handleStateEvent(PersistenceManagerImpl.java:152) ~[?:?]
at org.openhab.core.persistence.internal.PersistenceManagerImpl.stateChanged(PersistenceManagerImpl.java:473) ~[?:?]
at org.openhab.core.items.GenericItem.lambda$1(GenericItem.java:259) [bundleFile:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
at java.lang.Thread.run(Thread.java:834) [?:?]
2021-03-21 20:00:25.546 [WARN ] [org.openhab.core.items.GenericItem ] - failed notifying listener ‘org.openhab.core.persistence.internal.PersistenceManagerImpl@2470dbf0’ about state update of item Inputholding23298: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader ‘bootstrap’)
java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader ‘bootstrap’)
at org.openhab.persistence.jdbc.db.JdbcMariadbDAO.doPingDB(JdbcMariadbDAO.java:92) ~[?:?]
at org.openhab.persistence.jdbc.internal.JdbcMapper.pingDB(JdbcMapper.java:72) ~[?:?]
at org.openhab.persistence.jdbc.internal.JdbcMapper.checkDBAccessability(JdbcMapper.java:211) ~[?:?]
at org.openhab.persistence.jdbc.internal.JdbcPersistenceService.store(JdbcPersistenceService.java:136) ~[?:?]
at org.openhab.core.persistence.internal.PersistenceManagerImpl.handleStateEvent(PersistenceManagerImpl.java:152) ~[?:?]
at org.openhab.core.persistence.internal.PersistenceManagerImpl.stateChanged(PersistenceManagerImpl.java:473) ~[?:?]
at org.openhab.core.items.GenericItem.lambda$1(GenericItem.java:259) [bundleFile:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
at java.lang.Thread.run(Thread.java:834) [?:?]

Note that i have downgraded to OH3 3.0.1 Stable and I have the same issue

cat jdbc.persist
Strategies {
everyHour : “0 0 * * * ?”
everyDay : “0 0 0 * * ?”

    // if no strategy is specified for an Item entry below, the default list will be used
   default = everyChange

}

/*

  • Each line in this section defines for which Item(s) which strategy(ies) should be applied.

  • You can list single items, use “" for all items or "groupitem” for all members of a group

  • Item (excl. the group Item itself).
    */
    Items {
    // persist the Item state of Heating_Mode and Notifications_Active on every change and restore them from the db at startup
    * : strategy = everyChange

     // additionally, persist all temperature and weather values every hour
     Temperature*, Azimuth, Sun_Elevation, Diffuse_Radiation, Total_Radiation, Moon_Elevation  : strategy = everyHour
     CurrentDate, CurrentTime : strategy = everyDay
    

}

cat jdbc.config
:org.apache.felix.configadmin.revision:=L"55"
enableLogTime=“false”
localtime=“true”
numberDecimalcount=“4”
password=“xxx”
rebuildTableNames=“false”
reconnectCnt=“3”
service.pid=“org.openhab.jdbc”
tableUseRealItemNames=“true”
url=“jdbc:mariadb://192.168.210.53:3306/openhab”
user=“xxx”

Hi all,
I was also having a hard time migrating from OH 2.5 to 3.0.2.
First I had to rename the Items table to items. Then I found out that the openjdk-11 has an issue with connecting to mysql because TLSv1 and v1.1 are disabled by default. Solution can be found here:

After I applied this to the jdk, the connection more or less works, but now I get to another issue, which I couldn’t solve so far.

Looks like there is an issue somewhere in the item tables, but I don’t know how to find out which table it is.

2021-05-30 22:37:21.408 [DEBUG] [jdbc.internal.JdbcPersistenceService] - JDBC::activate: persistence service activated
2021-05-30 22:37:21.412 [DEBUG] [jdbc.internal.JdbcPersistenceService] - JDBC::updateConfig
2021-05-30 22:37:21.418 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::JdbcConfiguration
2021-05-30 22:37:21.425 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: configuration size = 15
2021-05-30 22:37:21.437 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: user=openhab
2021-05-30 22:37:21.441 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: password exists? true
2021-05-30 22:37:21.443 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: url=jdbc:mysql://127.0.0.1:3306/OpenHAB?serverTimezone=CET
2021-05-30 22:37:21.444 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: found serviceName = 'mysql'
2021-05-30 22:37:21.445 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: Init Data Access Object Class: 'org.openhab.persistence.jdbc.db.JdbcMysqlDAO'
2021-05-30 22:37:21.450 [DEBUG] [nhab.persistence.jdbc.db.JdbcBaseDAO] - JDBC::initSqlTypes: Initialize the type array
2021-05-30 22:37:21.453 [DEBUG] [nhab.persistence.jdbc.db.JdbcBaseDAO] - JDBC::initSqlQueries: 'JdbcMysqlDAO'
2021-05-30 22:37:21.455 [DEBUG] [hab.persistence.jdbc.db.JdbcMysqlDAO] - JDBC::initSqlTypes: Initialize the type array
2021-05-30 22:37:21.457 [DEBUG] [hab.persistence.jdbc.db.JdbcMysqlDAO] - JDBC::initSqlQueries: 'JdbcMysqlDAO'
2021-05-30 22:37:21.458 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: dBDAO ClassName=org.openhab.persistence.jdbc.db.JdbcMysqlDAO
2021-05-30 22:37:21.460 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: tableNamePrefix=Item
2021-05-30 22:37:21.462 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: tableUseRealItemNames=false
2021-05-30 22:37:21.463 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: tableIdDigitCount=0
2021-05-30 22:37:21.464 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: rebuildTableNames=true
2021-05-30 22:37:21.466 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: enableLogTime false
2021-05-30 22:37:21.477 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: load JDBC-driverClass was successful: 'com.mysql.jdbc.Driver'
2021-05-30 22:37:21.481 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: configuration complete. service=jdbc
2021-05-30 22:37:21.482 [DEBUG] [persistence.jdbc.internal.JdbcMapper] - JDBC::pingDB
2021-05-30 22:37:21.483 [DEBUG] [persistence.jdbc.internal.JdbcMapper] - JDBC::openConnection isDriverAvailable: true
2021-05-30 22:37:21.484 [INFO ] [persistence.jdbc.internal.JdbcMapper] - JDBC::openConnection: Driver is available::Yank setupDataSource
2021-05-30 22:37:21.504 [WARN ] [.zaxxer.hikari.util.DriverDataSource] - Registered driver with driverClassName=com.mysql.jdbc.Driver was not found, trying direct instantiation.
2021-05-30 22:37:21.889 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::setDbConnected true
2021-05-30 22:37:21.891 [DEBUG] [hab.persistence.jdbc.db.JdbcMysqlDAO] - JDBC::initAfterFirstDbConnection: Initializing step, after db is connected.
2021-05-30 22:37:21.963 [DEBUG] [ab.persistence.jdbc.utils.DbMetaData] - dbMajorVersion = '5'
2021-05-30 22:37:21.964 [DEBUG] [ab.persistence.jdbc.utils.DbMetaData] - dbMinorVersion = '7'
2021-05-30 22:37:21.966 [DEBUG] [ab.persistence.jdbc.utils.DbMetaData] - driverMajorVersion = '8'
2021-05-30 22:37:21.967 [DEBUG] [ab.persistence.jdbc.utils.DbMetaData] - driverMinorVersion = '0'
2021-05-30 22:37:21.968 [DEBUG] [ab.persistence.jdbc.utils.DbMetaData] - dbProductName = 'MySQL'
2021-05-30 22:37:21.969 [DEBUG] [ab.persistence.jdbc.utils.DbMetaData] - dbProductVersion = '5.7.33-0ubuntu0.18.04.1'
2021-05-30 22:37:21.973 [DEBUG] [persistence.jdbc.internal.JdbcMapper] - JDBC::pingDB asking db for name as absolutely first db action, after connection is established.
2021-05-30 22:37:22.169 [DEBUG] [persistence.jdbc.internal.JdbcMapper] - JDBC::checkDBAcessability, first try connection: true
2021-05-30 22:37:22.171 [DEBUG] [persistence.jdbc.internal.JdbcMapper] - JDBC::createItemsTableIfNot
2021-05-30 22:37:22.174 [DEBUG] [nhab.persistence.jdbc.db.JdbcBaseDAO] - JDBC::doCreateItemsTableIfNot sql=CREATE TABLE IF NOT EXISTS items (ItemId INT NOT NULL AUTO_INCREMENT,itemname VARCHAR(500) NOT NULL,PRIMARY KEY (ItemId))
2021-05-30 22:37:22.176 [DEBUG] [persistence.jdbc.internal.JdbcMapper] - JDBC::getItemIDTableNames
2021-05-30 22:37:22.179 [DEBUG] [nhab.persistence.jdbc.db.JdbcBaseDAO] - JDBC::doGetItemIDTableNames sql=SELECT itemid, itemname FROM items
2021-05-30 22:37:22.244 [DEBUG] [persistence.jdbc.internal.JdbcMapper] - JDBC::getItemTables
2021-05-30 22:37:22.250 [DEBUG] [nhab.persistence.jdbc.db.JdbcBaseDAO] - JDBC::doGetItemTables sql=SELECT table_name FROM information_schema.tables WHERE table_type='BASE TABLE' AND table_schema='OpenHAB' AND NOT table_name='items'
2021-05-30 22:37:22.278 [INFO ] [persistence.jdbc.internal.JdbcMapper] - JDBC::formatTableNames: found Table Name= HISTORIC_ITEM
2021-05-30 22:37:22.286 [ERROR] [org.openhab.persistence.jdbc        ] - bundle org.openhab.persistence.jdbc:3.0.2 (261)[org.openhab.persistence.jdbc.internal.JdbcPersistenceService(320)] : The activate method has thrown an exception
java.lang.NumberFormatException: For input string: "ITEM"
        at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) ~[?:?]
        at java.lang.Integer.parseInt(Integer.java:652) ~[?:?]
        at java.lang.Integer.parseInt(Integer.java:770) ~[?:?]
        at org.openhab.persistence.jdbc.internal.JdbcMapper.formatTableNames(JdbcMapper.java:333) ~[?:?]
        at org.openhab.persistence.jdbc.internal.JdbcMapper.checkDBSchema(JdbcMapper.java:229) ~[?:?]
        at org.openhab.persistence.jdbc.internal.JdbcPersistenceService.updateConfig(JdbcPersistenceService.java:220) ~[?:?]
        at org.openhab.persistence.jdbc.internal.JdbcPersistenceService.activate(JdbcPersistenceService.java:83) ~[?:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
        at org.apache.felix.scr.impl.inject.methods.BaseMethod.invokeMethod(BaseMethod.java:228) ~[bundleFile:?]
        at org.apache.felix.scr.impl.inject.methods.BaseMethod.access$500(BaseMethod.java:41) ~[bundleFile:?]
        at org.apache.felix.scr.impl.inject.methods.BaseMethod$Resolved.invoke(BaseMethod.java:664) ~[bundleFile:?]
        at org.apache.felix.scr.impl.inject.methods.BaseMethod.invoke(BaseMethod.java:510) [bundleFile:?]
        at org.apache.felix.scr.impl.inject.methods.ActivateMethod.invoke(ActivateMethod.java:317) [bundleFile:?]
        at org.apache.felix.scr.impl.inject.methods.ActivateMethod.invoke(ActivateMethod.java:307) [bundleFile:?]
        at org.apache.felix.scr.impl.manager.SingleComponentManager.createImplementationObject(SingleComponentManager.java:340) [bundleFile:?]
        at org.apache.felix.scr.impl.manager.SingleComponentManager.createComponent(SingleComponentManager.java:114) [bundleFile:?]
        at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:982) [bundleFile:?]
        at org.apache.felix.scr.impl.manager.SingleComponentManager.getServiceInternal(SingleComponentManager.java:955) [bundleFile:?]
        at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:900) [bundleFile:?]
        at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse$1.run(ServiceFactoryUse.java:212) [org.eclipse.osgi-3.12.100.jar:?]
        at java.security.AccessController.doPrivileged(Native Method) [?:?]
        at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.factoryGetService(ServiceFactoryUse.java:210) [org.eclipse.osgi-3.12.100.jar:?]
        at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.getService(ServiceFactoryUse.java:111) [org.eclipse.osgi-3.12.100.jar:?]
        at org.eclipse.osgi.internal.serviceregistry.ServiceConsumer$2.getService(ServiceConsumer.java:45) [org.eclipse.osgi-3.12.100.jar:?]
        at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:508) [org.eclipse.osgi-3.12.100.jar:?]
        at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:461) [org.eclipse.osgi-3.12.100.jar:?]
        at org.eclipse.osgi.internal.framework.BundleContextImpl.getService(BundleContextImpl.java:624) [org.eclipse.osgi-3.12.100.jar:?]
        at org.apache.felix.scr.impl.manager.SingleRefPair.getServiceObject(SingleRefPair.java:86) [bundleFile:?]
        at org.apache.felix.scr.impl.inject.BindParameters.getServiceObject(BindParameters.java:47) [bundleFile:?]
        at org.apache.felix.scr.impl.inject.methods.BindMethod.getServiceObject(BindMethod.java:664) [bundleFile:?]
        at org.apache.felix.scr.impl.manager.DependencyManager.getServiceObject(DependencyManager.java:2308) [bundleFile:?]
        at org.apache.felix.scr.impl.manager.DependencyManager.doInvokeBindMethod(DependencyManager.java:1805) [bundleFile:?]
        at org.apache.felix.scr.impl.manager.DependencyManager.invokeBindMethod(DependencyManager.java:1788) [bundleFile:?]
        at org.apache.felix.scr.impl.manager.SingleComponentManager.invokeBindMethod(SingleComponentManager.java:435) [bundleFile:?]
        at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.addedService(DependencyManager.java:325) [bundleFile:?]
        at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.addedService(DependencyManager.java:294) [bundleFile:?]
        at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1216) [bundleFile:?]
        at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1137) [bundleFile:?]
        at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.trackAdding(ServiceTracker.java:944) [bundleFile:?]
        at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.track(ServiceTracker.java:880) [bundleFile:?]
        at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:1168) [bundleFile:?]
        at org.apache.felix.scr.impl.BundleComponentActivator$ListenerInfo.serviceChanged(BundleComponentActivator.java:125) [bundleFile:?]
        at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:109) [org.eclipse.osgi-3.12.100.jar:?]
        at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:920) [org.eclipse.osgi-3.12.100.jar:?]
        at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) [org.eclipse.osgi-3.12.100.jar:?]
        at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) [org.eclipse.osgi-3.12.100.jar:?]
        at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:862) [org.eclipse.osgi-3.12.100.jar:?]
        at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:801) [org.eclipse.osgi-3.12.100.jar:?]
        at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:127) [org.eclipse.osgi-3.12.100.jar:?]
        at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:225) [org.eclipse.osgi-3.12.100.jar:?]
        at org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:469) [org.eclipse.osgi-3.12.100.jar:?]
        at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:906) [bundleFile:?]
        at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:892) [bundleFile:?]
        at org.apache.felix.scr.impl.manager.RegistrationManager.changeRegistration(RegistrationManager.java:128) [bundleFile:?]
        at org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:959) [bundleFile:?]
        at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:732) [bundleFile:?]
        at org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:666) [bundleFile:?]
        at org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:432) [bundleFile:?]
        at org.apache.felix.scr.impl.manager.ConfigurableComponentHolder.enableComponents(ConfigurableComponentHolder.java:665) [bundleFile:?]
        at org.apache.felix.scr.impl.BundleComponentActivator.initialEnable(BundleComponentActivator.java:338) [bundleFile:?]
        at org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:382) [bundleFile:?]
        at org.apache.felix.scr.impl.Activator.access$200(Activator.java:49) [bundleFile:?]
        at org.apache.felix.scr.impl.Activator$ScrExtension.start(Activator.java:264) [bundleFile:?]
        at org.apache.felix.scr.impl.AbstractExtender.createExtension(AbstractExtender.java:196) [bundleFile:?]
        at org.apache.felix.scr.impl.AbstractExtender.modifiedBundle(AbstractExtender.java:169) [bundleFile:?]
        at org.apache.felix.scr.impl.AbstractExtender.modifiedBundle(AbstractExtender.java:49) [bundleFile:?]
        at org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:482) [osgi.core-6.0.0.jar:?]
        at org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:415) [osgi.core-6.0.0.jar:?]
        at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:232) [osgi.core-6.0.0.jar:?]
        at org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:444) [osgi.core-6.0.0.jar:?]
        at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:908) [org.eclipse.osgi-3.12.100.jar:?]
        at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) [org.eclipse.osgi-3.12.100.jar:?]
        at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) [org.eclipse.osgi-3.12.100.jar:?]
        at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:213) [org.eclipse.osgi-3.12.100.jar:?]
        at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:120) [org.eclipse.osgi-3.12.100.jar:?]
        at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:112) [org.eclipse.osgi-3.12.100.jar:?]
        at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:168) [org.eclipse.osgi-3.12.100.jar:?]
        at org.eclipse.osgi.container.Module.publishEvent(Module.java:476) [org.eclipse.osgi-3.12.100.jar:?]
        at org.eclipse.osgi.container.Module.start(Module.java:467) [org.eclipse.osgi-3.12.100.jar:?]
        at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:383) [org.eclipse.osgi-3.12.100.jar:?]
        at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:402) [org.eclipse.osgi-3.12.100.jar:?]
        at org.apache.karaf.features.internal.service.BundleInstallSupportImpl.startBundle(BundleInstallSupportImpl.java:165) [bundleFile:?]
        at org.apache.karaf.features.internal.service.FeaturesServiceImpl.startBundle(FeaturesServiceImpl.java:1153) [bundleFile:?]
        at org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:1036) [bundleFile:?]
        at org.apache.karaf.features.internal.service.FeaturesServiceImpl.doProvision(FeaturesServiceImpl.java:1062) [bundleFile:?]
        at org.apache.karaf.features.internal.service.FeaturesServiceImpl.lambda$doProvisionInThread$13(FeaturesServiceImpl.java:998) [bundleFile:?]
        at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
        at java.lang.Thread.run(Thread.java:829) [?:?]