Skip to content

bin/ci: pass POSTGRES_HOST_AUTH_METHOD=trust to postgres container - #20

Closed
danp wants to merge 3 commits into
masterfrom
fix-bin-ci-postgres
Closed

bin/ci: pass POSTGRES_HOST_AUTH_METHOD=trust to postgres container#20
danp wants to merge 3 commits into
masterfrom
fix-bin-ci-postgres

Conversation

@danp

@danp danp commented May 3, 2020

Copy link
Copy Markdown
Contributor

In docker-library/postgres#658 a change was
made to the postgres image to require a password by default or
explicit disabling of auth.

For bin/ci, disable auth to keep configs simple. Add a note reminding
that doing this is highly insecure and should not be done in production.

Updates #19

In docker-library/postgres#658 a change was
made to the postgres image to require a password by default or
explicit disabling of auth.

For bin/ci, disable auth to keep configs simple. Add a note reminding
that doing this is highly insecure and should not be done in production.
@danp

danp commented May 3, 2020

Copy link
Copy Markdown
Contributor Author

This does not fully fix CI but it does get further, running the app but failing with:

03-May-2020 18:36:46.614 SEVERE [http-nio-8080-exec-2] org.apache.catalina.core.ApplicationDispatcher.invoke Servlet.service() for servlet [jsp] threw exception
	org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.onebusaway.wiki.api.WikiDocumentService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
		at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1493)
		at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1104)
		at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066)
		at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:659)
		at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
		at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:366)
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1272)
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireBean(AbstractAutowireCapableBeanFactory.java:303)
		at org.onebusaway.wiki.tags.WikiTag.doStartTag(WikiTag.java:57)

@barbeau

barbeau commented May 4, 2020

Copy link
Copy Markdown
Member

Thanks for working on this @danp!

The remaining problem looks very similar to these issue:

Maybe just adding a bean for WikiDocumentService at the bottom of https://github.com/OneBusAway/onebusaway-docker/blob/master/config/onebusaway-enterprise-acta-webapp-data-sources.xml?

Like:

<bean id="wikiDocumentServiceImpl" class="org.onebusaway.wiki.api.WikiDocumentService" />

You might need one for WikiRenderingService too - see https://github.com/OneBusAway/onebusaway-application-modules/blob/3bff253416c2574644fff1c8e36d758a24634c5a/onebusaway-enterprise-webapp/src/main/java/org/onebusaway/enterprise/webapp/actions/m/wiki/IndexAction.java.

@barbeau

barbeau commented May 4, 2020

Copy link
Copy Markdown
Member

Oh, see this example too, which has commented out config for these classes:
https://github.com/OneBusAway/onebusaway-application-modules/blob/f67adaaa9d00d19e40c793fd88ce3122bebf0dd9/onebusaway-enterprise-webapp/src/main/resources/data-sources.xml#L100

	<!--
	<jee:jndi-lookup id="xwikiUrlBean" jndi-name="java:comp/env/xwikiUrl" resource-ref="true" ></jee:jndi-lookup>
	<jee:jndi-lookup id="xwikiDocumentEditUrlBean" jndi-name="java:comp/env/wikiDocumentEditUrl" resource-ref="true" ></jee:jndi-lookup>
	<jee:jndi-lookup id="xwikiAttachmentUrlBean" jndi-name="java:comp/env/wikiAttachmentUrl" resource-ref="true" ></jee:jndi-lookup>
	<bean id="wikiDocumentService" class="org.onebusaway.wiki.xwiki.impl.XWikiDocumentServiceImpl" lazy-init="true">
		<property name="xwikiUrl" ref="xwikiUrlBean" />
	</bean>
	<bean id="wikiRenderingService" class="org.onebusaway.wiki.xwiki.impl.XWikiRenderingServiceImpl" lazy-init="true">
		<property name="wikiDocumentViewUrl" value="/wiki/%{documentName}" />
		<property name="wikiDocumentEditUrl" ref="xwikiDocumentEditUrlBean" />
		<property name="wikiAttachmentUrl" ref="xwikiAttachmentUrlBean" />
	</bean>
    -->

@danp

danp commented May 4, 2020

Copy link
Copy Markdown
Contributor Author

Based on https://github.com/OneBusAway/onebusaway-wiki-integration/blob/master/onebusaway-wiki-integration-simple/src/main/java/org/onebusaway/wiki/simple/SimpleWikiDocumentServiceImpl.java existing, I tired:

  <bean id="wikiDocumentService" class="org.onebusaway.wiki.simple.SimpleWikiDocumentServiceImpl" />
  <bean id="wikiRenderingService" class="org.onebusaway.wiki.simple.SimpleWikiRenderingServiceImpl" />

But that errors with:

04-May-2020 19:54:40.538 SEVERE [localhost-startStop-1] org.apache.catalina.core.StandardContext.listenerStart Exception sending context initialized event to listener instance of class [org.springframework.web.context.ContextLoaderListener]
 org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'serviceAreaServiceImpl': Unsatisfied dependency expressed through method 'setTransitDataService' parameter 0; nested exception is org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.onebusaway.wiki.simple.SimpleWikiDocumentServiceImpl] for bean with name 'wikiDocumentService' defined in class path resource [data-sources.xml]; nested exception is java.lang.ClassNotFoundException: org.onebusaway.wiki.simple.SimpleWikiDocumentServiceImpl
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:667)
	at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
...

Is there some way to disable wiki integration?

@barbeau

barbeau commented May 4, 2020

Copy link
Copy Markdown
Member

@danp I don't think that's the right wiki impl class, as it was last edited years ago.

Did you try the config in #20 (comment)?

@danp

danp commented May 4, 2020

Copy link
Copy Markdown
Contributor Author

Ah, blast. I did try with org.onebusaway.wiki.xwiki.impl.XWikiDocumentServiceImpl and the other like in the example but that broke wanting a hostname. Was thinking that was going to mean running XWiki or something somehow which doesn't seem ideal.

@barbeau

barbeau commented May 4, 2020

Copy link
Copy Markdown
Member

Yeah, we don't want to have to run Xwiki.

IIRC as long as you give it a valid host name, even if it 404s on the actual links, it will work.

@danp

danp commented May 4, 2020

Copy link
Copy Markdown
Contributor Author

Based on the example and things at https://github.com/OneBusAway/onebusaway/wiki/Wiki-Integration#xwiki-configuration-for-onebusaway-webapp, just push up what I tried. It failed with:

04-May-2020 22:02:39.588 SEVERE [localhost-startStop-1] org.apache.catalina.core.StandardContext.listenerStart Exception sending context initialized event to listener instance of class [org.springframework.web.context.ContextLoaderListener]
 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'agencyMetadataSessionFactory': Failed to introspect bean class [org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean] for lookup method metadata: could not find class that it depends on; nested exception is java.lang.NoClassDefFoundError: [Lorg/hibernate/engine/FilterDefinition;
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:269)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanFactory.java:1126)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1099)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:742)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543)
	at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:443)
	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:325)
	at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107)
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4745)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5207)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:752)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
	at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1141)
	at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1875)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NoClassDefFoundError: [Lorg/hibernate/engine/FilterDefinition;
	at java.lang.Class.getDeclaredMethods0(Native Method)
	at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
	at java.lang.Class.getDeclaredMethods(Class.java:1975)
	at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:613)
	at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:524)
	at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:537)
	at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:510)
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:247)
	... 27 more
Caused by: java.lang.ClassNotFoundException: org.hibernate.engine.FilterDefinition
	at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1291)
	at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1119)
	... 35 more

@barbeau

barbeau commented May 4, 2020

Copy link
Copy Markdown
Member

@danp I believe that wiki page on configuration the wiki is really old too and relates to OBA v1.x.

This page is new for v2.x:
https://github.com/OneBusAway/onebusaway-application-modules/wiki/Enterprise-Webapp-Configuration

...but doesn't mention xwiki.

I'll try to look at the newest error you posted tomorrow.

@barbeau

barbeau commented Jul 6, 2020

Copy link
Copy Markdown
Member

@danp Sorry, way late on this, but for that error did you try adding:

  <bean id="agencyMetadataSessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="dataSource" ref="agencyMetadataDataSource" />
    <property name="annotatedClasses">
      <list>
        <value>org.onebusaway.agency_metadata.model.AgencyMetadata</value>
        <value>org.onebusaway.agency_metadata.service.AgencyMetadataDaoImpl</value>
      </list>
    </property>
    <property name="hibernateProperties">
      <props>
        <prop key="hibernate.connection.pool_size">1</prop>
        <prop key="hibernate.current_session_context_class">thread</prop>
        <prop key="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</prop>
      </props>
    </property>
  </bean>

This is from the config at https://github.com/OneBusAway/onebusaway-application-modules/wiki/Enterprise-Webapp-Configuration, which should (hopefully) work for v2.x.

@danp
danp force-pushed the fix-bin-ci-postgres branch from 3da57ea to 0360de0 Compare July 30, 2020 22:13
@danp

danp commented Jul 30, 2020

Copy link
Copy Markdown
Contributor Author

Tried that just now, sorry for the delay. Didn't pass but I didn't dig into why. Not sure I can help any more here.

@barbeau

barbeau commented Mar 1, 2021

Copy link
Copy Markdown
Member

There are some tips here that appeared to work for someone that we can try:
https://groups.google.com/g/onebusaway-developers/c/8SAvd2ibhXs/m/479hAVXkAgAJ

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants