Skip to content
This repository has been archived by the owner on Jun 10, 2024. It is now read-only.

Error locating module #470

Open
dwolfson opened this issue Apr 2, 2023 · 2 comments
Open

Error locating module #470

dwolfson opened this issue Apr 2, 2023 · 2 comments

Comments

@dwolfson
Copy link
Member

dwolfson commented Apr 2, 2023

In experimenting with XTDB configurations, I see an exception where xtdb is not finding the module xtdb.jdbc/->tx.log. Did I misspell something? Any suggestions?

I tried the following configuration document based on what I saw on the xtdb website:

repositoryConnectionBody = {
"class": "Connection",
"connectorType": {
"class": "ConnectorType",
"connectorProviderClassName": "org.odpi.egeria.connectors.juxt.xtdb.repositoryconnector.XtdbOMRSRepositoryConnectorProvider"
},
"configurationProperties":
{
"xtdbConfig":
{
"xtdb.lucene/lucene-store":
{
"db-dir": "data/servers/xtdb/lucene"
},
"xtdb/index-store":
{
"kv-store":
{
"xtdb/module": "xtdb.rocksdb/->kv-store",
"db-dir": "data/servers/xtdb/rdb-index"
}
},
"xtdb.jdbc/connection-pool":
{
"dialect":
{
"xtdb/module": "xtdb.jdbc.psql/->dialect"
},
"db-spec":
{
"host": "jdbc:postgresql://host.rancher-desktop.internal :5442",
"dbname": "xtdb",
"user": "postgres",
"password": "im7383swg"
}
},
"xtdb/tx-log":
{
"xtdb/module": "xtdb.jdbc/->tx.log",
"connection-pool": "xtdb.jdbc/connection-pool"
},
"xtdb/document-store":
{
"xtdb/module": "xtdb.jdbc/->document-store",
"connection-pool": "xtdb.jdbc/connection-pool"
},
"poll-sleep-duration": "PT0.1S"
}
}
}

When starting Egeria with that configuration loaded, in the audit log I see:
...

Sun Apr 02 13:37:00 GMT 2023 cocoMDS2 Exception OMRS-XTDB-REPOSITORY-0008 The XTDB repository node failed to start due to clojure.lang.ExceptionInfo.
Sun Apr 02 13:37:00 GMT 2023 cocoMDS2 Exception OMRS-XTDB-REPOSITORY-0008 Supplementary information: log record id f8fdfe9d-216b-44f4-a5b3-6d6cb4d93538 clojure.lang.ExceptionInfo returned message of Error locating module and stacktrace of
clojure.lang.ExceptionInfo: Error locating module {:module xtdb.jdbc/->tx.log}
at xtdb.system.ModuleRef.prepare_dep(system.clj:113)
at xtdb.system$opts_reducer$f__6430.invoke(system.clj:131)
at xtdb.system$opts_reducer$f__6430.invoke(system.clj:130)
at clojure.lang.PersistentVector.reduce(PersistentVector.java:343)
at clojure.core$reduce.invokeStatic(core.clj:6885)
at clojure.core$reduce.invoke(core.clj:6868)
at xtdb.system$prep_system.invokeStatic(system.clj:156)
at xtdb.system$prep_system.invoke(system.clj:141)
at xtdb.system$prep_system.invokeStatic(system.clj:142)
at xtdb.system$prep_system.invoke(system.clj:141)
at xtdb.api$start_node.invokeStatic(api.clj:297)
at xtdb.api$start_node.invoke(api.clj:284)
at clojure.lang.Var.invoke(Var.java:384)
at xtdb.api.XtdbFactory.startNode(XtdbFactory.java:16)
at xtdb.api.IXtdb.startNode(IXtdb.java:45)
at org.odpi.egeria.connectors.juxt.xtdb.repositoryconnector.XtdbOMRSRepositoryConnector.start(XtdbOMRSRepositoryConnector.java:157)
at org.odpi.openmetadata.repositoryservices.localrepository.repositoryconnector.LocalOMRSRepositoryConnector.start(LocalOMRSRepositoryConnector.java:162)
at org.odpi.openmetadata.repositoryservices.admin.OMRSOperationalServices.initializeCohortMember(OMRSOperationalServices.java:428)
at org.odpi.openmetadata.adminservices.server.OMAGServerOperationalServices.activateWithSuppliedConfig(OMAGServerOperationalServices.java:324)
at org.odpi.openmetadata.adminservices.server.OMAGServerOperationalServices.activateWithStoredConfig(OMAGServerOperationalServices.java:154)
at org.odpi.openmetadata.adminservices.spring.OperationalServicesResource.activateWithStoredConfig(OperationalServicesResource.java:60)
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.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:207)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:152)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:884)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1081)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:974)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1011)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:563)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:631)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:205)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.odpi.openmetadata.http.HttpRequestHeadersFilter.doFilter(HttpRequestHeadersFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.springframework.web.filter.ServerHttpObservationFilter.doFilterInternal(ServerHttpObservationFilter.java:109)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:166)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:738)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:894)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:833)

@dwolfson
Copy link
Member Author

I suspect that this was due to a malformed JSON config. Will test further.

@planetf1
Copy link
Member

planetf1 commented Apr 14, 2023

Additional dependencies are likely needed - for example in your case, for using JDBC with xtdb

The docs at https://egeria-project.org/connectors/repository/xtdb/?h=xtdb#pluggable-persistence have some details

To use in the helm charts, you would need to locate a download source for each library, and add to the 'extralibs' configuration.

We should also consider whether to build

  • the xtdb connector
  • the associated docker image

with additional dependencies, to suit a broader range of configuration options -- JDBC perhaps being a good example

To do so , the easiest would be to add as gradle dependencies, as this would then be effective for both.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants