Skip to Main Content

Berkeley DB Family

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Interested in getting your voice heard by members of the Developer Marketing team at Oracle? Check out this post for AppDev or this post for AI focus group information.

InvalidClassException Error when using Berkeley db 18.3.12 and Helidon 3.0.2

User_UOX6DJan 26 2023 — edited Jan 26 2023

Hi,
We are using Berkeley db in our project where we are also using Helidon.
Here are the versions we are using-
Helidon version - 3.0.2
Java 17
Berkeley db 18.3.12
In an independent java project, where we are only using Berkeley db and no helidon, with an empty Berkeley db folder on start up, entity store is being created properly and everything is working fine. When done the same in a project where we are using helidon 3.0.2 and Berkeley db with an empty bdb folder on startup, we are seeing InvalidClassException error and it’s trying to create entity store multiple times in the Dao class and failing.
Would greatly appreciate any help on this.
Below is the error stack trace -
2023-01-26 09:56:19,345 ERROR [main] com.oracle.blockchain.opcp.ServerLifecycleEvents - Unable to check And Populate Default LDAP
com.sleepycat.je.EnvironmentFailureException: (JE 18.3.12) java.io.InvalidClassException: filter status: REJECTED UNEXPECTED_EXCEPTION: Unexpected internal Exception, may have side effects.
com.sleepycat.je.EnvironmentFailureException: (JE 18.3.12) java.io.InvalidClassException: filter status: REJECTED UNEXPECTED_EXCEPTION: Unexpected internal Exception, may have side effects.
at com.sleepycat.je.EnvironmentFailureException.unexpectedException(EnvironmentFailureException.java:354)
at com.sleepycat.compat.DbCompat.unexpectedException(DbCompat.java:582)
at com.sleepycat.persist.impl.PersistCatalog.readData(PersistCatalog.java:1266)
at com.sleepycat.persist.impl.PersistCatalog.init(PersistCatalog.java:318)
at com.sleepycat.persist.impl.PersistCatalog.initAndRetry(PersistCatalog.java:274)
at com.sleepycat.persist.impl.PersistCatalog.<init>(PersistCatalog.java:234)
at com.sleepycat.persist.impl.Store.<init>(Store.java:210)
at com.sleepycat.persist.EntityStore.<init>(EntityStore.java:204)
at com.oracle.blockchain.opcp.EntityStoreConfig.initializeBerkeleyDb(EntityStoreConfig.java:73)
at com.oracle.blockchain.opcp.EntityStoreConfig.<init>(EntityStoreConfig.java:36)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
at org.jboss.weld.injection.ConstructorInjectionPoint.newInstance(ConstructorInjectionPoint.java:119)
at org.jboss.weld.injection.ConstructorInjectionPoint.invokeAroundConstructCallbacks(ConstructorInjectionPoint.java:92)
at org.jboss.weld.injection.ConstructorInjectionPoint.newInstance(ConstructorInjectionPoint.java:78)
at org.jboss.weld.injection.producer.AbstractInstantiator.newInstance(AbstractInstantiator.java:28)
at org.jboss.weld.injection.producer.BasicInjectionTarget.produce(BasicInjectionTarget.java:112)
at org.jboss.weld.injection.producer.BeanInjectionTarget.produce(BeanInjectionTarget.java:186)
at io.helidon.integrations.cdi.delegates.DelegatingProducer.produce(DelegatingProducer.java:51)
at io.helidon.integrations.cdi.delegates.DelegatingProducer.produce(DelegatingProducer.java:51)
at org.jboss.weld.bean.ManagedBean.create(ManagedBean.java:160)
at org.jboss.weld.contexts.AbstractContext.get(AbstractContext.java:96)
at org.jboss.weld.bean.ContextualInstanceStrategy$DefaultContextualInstanceStrategy.get(ContextualInstanceStrategy.java:100)
at org.jboss.weld.bean.ContextualInstanceStrategy$ApplicationScopedContextualInstanceStrategy.get(ContextualInstanceStrategy.java:140)
at org.jboss.weld.bean.ContextualInstance.get(ContextualInstance.java:50)
at org.jboss.weld.bean.proxy.ContextBeanInstance.getInstance(ContextBeanInstance.java:102)
at org.jboss.weld.bean.proxy.ProxyMethodHandler.getInstance(ProxyMethodHandler.java:131)
at com.oracle.blockchain.opcp.EntityStoreConfig$Proxy$_$$_WeldClientProxy.getStore(Unknown Source)
at com.oracle.blockchain.opcp.dao.core.ConfigDao.<init>(ConfigDao.java:37)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
at org.jboss.weld.injection.ConstructorInjectionPoint.newInstance(ConstructorInjectionPoint.java:119)
at org.jboss.weld.injection.ConstructorInjectionPoint.invokeAroundConstructCallbacks(ConstructorInjectionPoint.java:92)
at org.jboss.weld.injection.ConstructorInjectionPoint.newInstance(ConstructorInjectionPoint.java:78)
at org.jboss.weld.injection.producer.AbstractInstantiator.newInstance(AbstractInstantiator.java:28)
at org.jboss.weld.injection.producer.BasicInjectionTarget.produce(BasicInjectionTarget.java:112)
at org.jboss.weld.injection.producer.BeanInjectionTarget.produce(BeanInjectionTarget.java:186)
at io.helidon.integrations.cdi.delegates.DelegatingProducer.produce(DelegatingProducer.java:51)
at io.helidon.integrations.cdi.delegates.DelegatingProducer.produce(DelegatingProducer.java:51)
at org.jboss.weld.bean.ManagedBean.create(ManagedBean.java:160)
at org.jboss.weld.contexts.AbstractContext.get(AbstractContext.java:96)
at org.jboss.weld.bean.ContextualInstanceStrategy$DefaultContextualInstanceStrategy.get(ContextualInstanceStrategy.java:100)
at org.jboss.weld.bean.ContextualInstanceStrategy$ApplicationScopedContextualInstanceStrategy.get(ContextualInstanceStrategy.java:140)
at org.jboss.weld.bean.ContextualInstance.get(ContextualInstance.java:50)
at org.jboss.weld.bean.proxy.ContextBeanInstance.getInstance(ContextBeanInstance.java:102)
at org.jboss.weld.bean.proxy.ProxyMethodHandler.getInstance(ProxyMethodHandler.java:131)
at com.oracle.blockchain.opcp.dao.core.ConfigDao$Proxy$_$$_WeldClientProxy.getLdapConfigByName(Unknown Source)
at com.oracle.blockchain.opcp.ServerLifecycleEvents.checkAndPopulateDefaultLDAP(ServerLifecycleEvents.java:105)
at com.oracle.blockchain.opcp.ServerLifecycleEvents.postServerStartActions(ServerLifecycleEvents.java:91)
at com.oracle.blockchain.opcp.ServerLifecycleEvents.onStartup(ServerLifecycleEvents.java:78)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.jboss.weld.injection.StaticMethodInjectionPoint.invoke(StaticMethodInjectionPoint.java:95)
at org.jboss.weld.injection.StaticMethodInjectionPoint.invoke(StaticMethodInjectionPoint.java:85)
at org.jboss.weld.injection.MethodInvocationStrategy$SimpleMethodInvocationStrategy.invoke(MethodInvocationStrategy.java:168)
at org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:330)
at org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:308)
at org.jboss.weld.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:286)
at jakarta.enterprise.inject.spi.ObserverMethod.notify(ObserverMethod.java:125)
at org.jboss.weld.util.Observers.notify(Observers.java:166)
at org.jboss.weld.event.ObserverNotifier.notifySyncObservers(ObserverNotifier.java:285)
at org.jboss.weld.event.ObserverNotifier.notify(ObserverNotifier.java:273)
at org.jboss.weld.event.EventImpl.fire(EventImpl.java:96)
at io.helidon.microprofile.cdi.HelidonContainerImpl.doStart(HelidonContainerImpl.java:340)
at io.helidon.common.context.Contexts.runInContext(Contexts.java:137)
at io.helidon.microprofile.cdi.HelidonContainerImpl.start(HelidonContainerImpl.java:250)
at io.helidon.microprofile.server.ServerImpl.start(ServerImpl.java:76)
at com.oracle.blockchain.opcp.restserver.BPControlPlaneServer.startServer(BPControlPlaneServer.java:15)
at com.oracle.blockchain.opcp.restserver.BPControlPlaneServer.main(BPControlPlaneServer.java:11)
Caused by: java.io.InvalidClassException: filter status: REJECTED
at java.base/java.io.ObjectInputStream.filterCheck(ObjectInputStream.java:1409)
at java.base/java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:2044)
at java.base/java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1898)
at java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2224)
at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1733)
at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:509)
at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:467)
at com.sleepycat.persist.impl.PersistCatalog.readData(PersistCatalog.java:1249)
... 74 more
Thank you!

Comments

MartinBach-Oracle Jan 8 2025

Hi Salomon,

please have a look at this blog post written by @ulrike-schwinn-oracle :

https://blogs.oracle.com/coretec/post/easy-sql-statement-tracking-in23c

I hope this answers your question, if not, please shout!

- Martin

Solomon Yakobson Jan 8 2025

@martinbach-oracle - No, it doesn't answer my question. Article you pointed to shows uses:

SQL> alter system set sql_history_enabled=true scope=both;

And in my post I said “Works fine when enabled on system level”. My question was about

SQL> ALTER SESSION SET SQL_HISTORY_ENABLED = TRUE;

where I showed SQL history was NOT captured even though it should be based on SQL_HISTORY_ENABLED:

Modifiable **ALTER SESSION**, ALTER SYSTEM

SY.

MartinBach-Oracle Jan 8 2025

As per the article I shared the situation is as follows at the moment

  • You must enable SQL history PDB-wide (only a DBA can do that) so there's a certain level of control over the feature
  • Your session has access to the SQL history
  • If you don't want to record anything, set sql_history_enabled to false.

I'm currently assessing if that's intended behaviour (in which case the documentation should be amended) or a feature not working as it should (in which case it needs fixing). The parameter is indeed session-modifyable, but not in the sense you expected.

We'll keep you posted.

- Martin

Solomon Yakobson Jan 8 2025

Do you mean it must be enabled on system level and not on session level and all session can do is disabe it for the session?

SY.

MartinBach-Oracle Jan 14 2025

Yes,

that's correct as of Oracle Database Free 23.6.

- Martin

Solomon Yakobson Jan 14 2025

Thanks Martin, I hope this will be added to 23AI docs soon.

SY.

1 - 6

Post Details

Added on Jan 26 2023
1 comment
401 views