Hi, I am attempting to change the default user `da...
# troubleshoot
g
Hi, I am attempting to change the default user
datahub
password to something more secure than just
datahub
. This is the approach that I’m using but it results in several errors with the
datahub-frontend
deployment. What am I missing?
Copy code
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    name: datahub-frontend
...
...
volumes:
  - name: userprops
    secret:
      secretName: datahub-user-props-secret
containers:
 - name: datahub-frontend
   image: .../frontend:latest
   volumeMounts:
     - name: userprops
       mountPath: /datahub-frontend/conf/
       subPath: user.props
1
Here are the errors that I’m getting:
Copy code
WARNING: An illegal reflective access operation has occurred
[FATAL][2022-12-07 16:33:26 +0000]	      WARNING: Illegal reflective access by com.google.inject.internal.cglib.core.$ReflectUtils$1 (file:/datahub-frontend/lib/com.google.inject-guice-4.2.2.jar) to method java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain)
[FATAL][2022-12-07 16:33:26 +0000]	      WARNING: Please consider reporting this to the maintainers of com.google.inject.internal.cglib.core.$ReflectUtils$1
[FATAL][2022-12-07 16:33:26 +0000]	      WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
[FATAL][2022-12-07 16:33:26 +0000]	      WARNING: All illegal access operations will be denied in a future release
[FATAL][2022-12-07 16:33:26 +0000]	      Oops, cannot start the server.
[FATAL][2022-12-07 16:33:26 +0000]	      com.google.inject.CreationException: Unable to create injector, see the following errors:
[FATAL][2022-12-07 16:33:26 +0000]	
[FATAL][2022-12-07 16:33:26 +0000]	      1) No implementation for com.linkedin.entity.client.EntityClient was bound.
[FATAL][2022-12-07 16:33:26 +0000]	      while locating com.linkedin.entity.client.EntityClient
[FATAL][2022-12-07 16:33:26 +0000]	      for the 3rd parameter of controllers.SsoCallbackController.<init>(SsoCallbackController.java:40)
[FATAL][2022-12-07 16:33:26 +0000]	      while locating controllers.SsoCallbackController
[FATAL][2022-12-07 16:33:26 +0000]	      for the 4th parameter of router.Routes.<init>(Routes.scala:45)
[FATAL][2022-12-07 16:33:26 +0000]	      at play.api.inject.RoutesProvider$.bindingsFromConfiguration(BuiltinModule.scala:129):
[FATAL][2022-12-07 16:33:26 +0000]	      Binding(class router.Routes to self) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$4)
[FATAL][2022-12-07 16:33:26 +0000]	
[FATAL][2022-12-07 16:33:26 +0000]	      2) Could not find a suitable constructor in client.AuthServiceClient. Classes must have either one (and only one) constructor annotated with @Inject or a zero-argument constructor that is not private.
[FATAL][2022-12-07 16:33:26 +0000]	      at client.AuthServiceClient.class(AuthServiceClient.java:24)
[FATAL][2022-12-07 16:33:26 +0000]	      while locating client.AuthServiceClient
[FATAL][2022-12-07 16:33:26 +0000]	      for field at controllers.AuthenticationController._authClient(AuthenticationController.java:45)
[FATAL][2022-12-07 16:33:26 +0000]	      while locating controllers.AuthenticationController
[FATAL][2022-12-07 16:33:26 +0000]	      for the 3rd parameter of router.Routes.<init>(Routes.scala:45)
[FATAL][2022-12-07 16:33:26 +0000]	      at play.api.inject.RoutesProvider$.bindingsFromConfiguration(BuiltinModule.scala:129):
[FATAL][2022-12-07 16:33:26 +0000]	      Binding(class router.Routes to self) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$4)
[FATAL][2022-12-07 16:33:26 +0000]	
[FATAL][2022-12-07 16:33:26 +0000]	      3) Could not find a suitable constructor in client.AuthServiceClient. Classes must have either one (and only one) constructor annotated with @Inject or a zero-argument constructor that is not private.
[FATAL][2022-12-07 16:33:26 +0000]	      at client.AuthServiceClient.class(AuthServiceClient.java:24)
[FATAL][2022-12-07 16:33:26 +0000]	      while locating client.AuthServiceClient
[FATAL][2022-12-07 16:33:26 +0000]	      for the 4th parameter of controllers.SsoCallbackController.<init>(SsoCallbackController.java:40)
[FATAL][2022-12-07 16:33:26 +0000]	      while locating controllers.SsoCallbackController
[FATAL][2022-12-07 16:33:26 +0000]	      for the 4th parameter of router.Routes.<init>(Routes.scala:45)
[FATAL][2022-12-07 16:33:26 +0000]	      at play.api.inject.RoutesProvider$.bindingsFromConfiguration(BuiltinModule.scala:129):
[FATAL][2022-12-07 16:33:26 +0000]	      Binding(class router.Routes to self) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$4)
[FATAL][2022-12-07 16:33:26 +0000]	
[FATAL][2022-12-07 16:33:26 +0000]	      4) Could not find a suitable constructor in client.AuthServiceClient. Classes must have either one (and only one) constructor annotated with @Inject or a zero-argument constructor that is not private.
[FATAL][2022-12-07 16:33:26 +0000]	      at client.AuthServiceClient.class(AuthServiceClient.java:24)
[FATAL][2022-12-07 16:33:26 +0000]	      while locating client.AuthServiceClient
[FATAL][2022-12-07 16:33:26 +0000]	      for field at controllers.TrackingController._authClient(TrackingController.java:35)
[FATAL][2022-12-07 16:33:26 +0000]	      while locating controllers.TrackingController
[FATAL][2022-12-07 16:33:26 +0000]	      for the 7th parameter of router.Routes.<init>(Routes.scala:45)
[FATAL][2022-12-07 16:33:26 +0000]	      at play.api.inject.RoutesProvider$.bindingsFromConfiguration(BuiltinModule.scala:129):
[FATAL][2022-12-07 16:33:26 +0000]	      Binding(class router.Routes to self) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$4)
[FATAL][2022-12-07 16:33:26 +0000]	
[FATAL][2022-12-07 16:33:26 +0000]	      5) Could not find a suitable constructor in com.datahub.authentication.Authentication. Classes must have either one (and only one) constructor annotated with @Inject or a zero-argument constructor that is not private.
[FATAL][2022-12-07 16:33:26 +0000]	      at com.datahub.authentication.Authentication.class(Authentication.java:21)
[FATAL][2022-12-07 16:33:26 +0000]	      while locating com.datahub.authentication.Authentication
[FATAL][2022-12-07 16:33:26 +0000]	      for the 2nd parameter of controllers.SsoCallbackController.<init>(SsoCallbackController.java:40)
[FATAL][2022-12-07 16:33:26 +0000]	      while locating controllers.SsoCallbackController
[FATAL][2022-12-07 16:33:26 +0000]	      for the 4th parameter of router.Routes.<init>(Routes.scala:45)
[FATAL][2022-12-07 16:33:26 +0000]	      at play.api.inject.RoutesProvider$.bindingsFromConfiguration(BuiltinModule.scala:129):
[FATAL][2022-12-07 16:33:26 +0000]	      Binding(class router.Routes to self) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$4)
[FATAL][2022-12-07 16:33:26 +0000]	
[FATAL][2022-12-07 16:33:26 +0000]	      6) No implementation for org.pac4j.core.context.session.SessionStore was bound.
[FATAL][2022-12-07 16:33:26 +0000]	      while locating org.pac4j.core.context.session.SessionStore
[FATAL][2022-12-07 16:33:26 +0000]	      for field at controllers.AuthenticationController._playSessionStore(AuthenticationController.java:45)
[FATAL][2022-12-07 16:33:26 +0000]	      while locating controllers.AuthenticationController
[FATAL][2022-12-07 16:33:26 +0000]	      for the 3rd parameter of router.Routes.<init>(Routes.scala:45)
[FATAL][2022-12-07 16:33:26 +0000]	      at play.api.inject.RoutesProvider$.bindingsFromConfiguration(BuiltinModule.scala:129):
[FATAL][2022-12-07 16:33:26 +0000]	      Binding(class router.Routes to self) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$4)
[FATAL][2022-12-07 16:33:26 +0000]	
[FATAL][2022-12-07 16:33:26 +0000]	      7) No implementation for org.pac4j.play.store.PlaySessionStore was bound.
[FATAL][2022-12-07 16:33:26 +0000]	      while locating org.pac4j.play.store.PlaySessionStore
[FATAL][2022-12-07 16:33:26 +0000]	      for field at org.pac4j.play.LogoutController.playSessionStore(LogoutController.java:28)
[FATAL][2022-12-07 16:33:26 +0000]	      while locating controllers.CentralLogoutController
[FATAL][2022-12-07 16:33:26 +0000]	      for the 5th parameter of router.Routes.<init>(Routes.scala:45)
[FATAL][2022-12-07 16:33:26 +0000]	      at play.api.inject.RoutesProvider$.bindingsFromConfiguration(BuiltinModule.scala:129):
[FATAL][2022-12-07 16:33:26 +0000]	      Binding(class router.Routes to self) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$4)
i
Hello Steven, Frontend pod requires several environment variables. Have you taken a look at the ones configured here: https://github.com/acryldata/datahub-helm/blob/ce9b4196dd1815dfa218da6db40438f4e18[…]ts/datahub/subcharts/datahub-frontend/templates/deployment.yaml ?
Did you have frontend pod working prior to changing the default user credentials?
g
Yes, it was working before adding the custom user.props changes with volume and volumeMount.
Do I need to create a symlink, something like this?
Copy code
volumeMounts:
	- name: userprops
	  mountPath: /datahub-frontend/custom/
	  subPath: user.props
	command:
	  - bash
	  - -c
	  - ln -s /datahub-frontend/conf/user.props /datahub-frontend/custom/user.props
@incalculable-ocean-74010 Any ideas?
i
Not at a quick glance, will need to get to you on this. Maybe confer with the team.
g
Are there any detailed docs on how to do this? I’ve been trying and waiting all week. Thanks.
b
what happens if you modify the mountpath slightly to include the fullpath, this is how i used it:
Copy code
extraVolumes:
    - name: datahub-users
      secret:
        defaultMode: 0444
        secretName:  datahub-users-secret
  extraVolumeMounts:
    - name: datahub-users
      mountPath: /datahub-frontend/conf/user.props
      subPath: user.props
b
yes, what xL wrote should work. see here in quickstart we also mount the user.props to the frontend instance https://github.com/datahub-project/datahub/blob/master/docker/docker-compose.yml#L122