apache / dolphinscheduler

Apache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code
https://dolphinscheduler.apache.org/
Apache License 2.0
12.88k stars 4.63k forks source link

[Bug] [API Server] The API Server fails to start with error “Error creating bean with name 'cloudController'... Error creating bean with name 'cloudServiceImpl'” #16520

Closed chenyz1984 closed 4 weeks ago

chenyz1984 commented 2 months ago

Search before asking

What happened

Error message

The API Server of DolphinScheduler 3.2.2 fails to start with the error message as below:

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
[ERROR] 2024-08-27 13:45:57.395 +0800 o.s.b.SpringApplication:[824] - Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cloudController': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cloudServiceImpl' defined in URL [jar:file:/usr/hadoop/dolphinscheduler/api-server/libs/dolphinscheduler-api-3.2.2.jar!/org/apache/dolphinscheduler/api/service/impl/CloudServiceImpl.class]: Instantiation of bean failed; nested exception is java.lang.ExceptionInInitializerError
        at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessProperties(CommonAnnotationBeanPostProcessor.java:332)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1431)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:619)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:955)
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583)
        at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147)
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:734)
        at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:308)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1295)
        at org.apache.dolphinscheduler.api.ApiApplicationServer.main(ApiApplicationServer.java:65)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cloudServiceImpl' defined in URL [jar:file:/usr/hadoop/dolphinscheduler/api-server/libs/dolphinscheduler-api-3.2.2.jar!/org/apache/dolphinscheduler/api/service/impl/CloudServiceImpl.class]: Instantiation of bean failed; nested exception is java.lang.ExceptionInInitializerError
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1334)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1232)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
        at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1391)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1311)
        at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.autowireResource(CommonAnnotationBeanPostProcessor.java:544)
        at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.getResource(CommonAnnotationBeanPostProcessor.java:520)
        at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor$ResourceElement.getResourceToInject(CommonAnnotationBeanPostProcessor.java:673)
        at org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.inject(InjectionMetadata.java:228)
        at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:119)
        at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessProperties(CommonAnnotationBeanPostProcessor.java:329)
        ... 17 common frames omitted
Caused by: java.lang.ExceptionInInitializerError: null
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
        at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:211)
        at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:87)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1326)
        ... 33 common frames omitted
Caused by: java.lang.IllegalArgumentException: Must provide non-null values for clientId, tenantId, clientSecret properties in ClientSecretCredentialBuilder
        at com.azure.identity.implementation.util.ValidationUtil.validate(ValidationUtil.java:27)
        at com.azure.identity.ClientSecretCredentialBuilder.build(ClientSecretCredentialBuilder.java:74)
        at org.apache.dolphinscheduler.api.service.impl.CloudServiceImpl.<clinit>(CloudServiceImpl.java:55)
        ... 40 common frames omitted

Application.yml

The configuration in $APISERVER_HOME/conf/application.yml as below:

server:
  port: 12345
  servlet:
    session:
      timeout: 120m
    context-path: /dolphinscheduler/
  compression:
    enabled: true
    mime-types: text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json,application/xml
  jetty:
    max-http-form-post-size: 5000000

# 数据库连接
spring:
  banner:
    charset: UTF-8
  jackson:
    time-zone: GMT+8
    date-format: "yyyy-MM-dd HH:mm:ss"
  servlet:
    multipart:
      max-file-size: 1024MB
      max-request-size: 1024MB
  messages:
    basename: i18n/messages 
  # 数据库连接  
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: "jdbc:mysql://192.168.3.240:4408/dolphinscheduler?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false"
    username: dolphins
    password: dolphins123
    hikari:
      connection-test-query: select 1
      minimum-idle: 5
      auto-commit: true
      validation-timeout: 3000
      pool-name: DolphinScheduler
      maximum-pool-size: 50
      connection-timeout: 30000
      idle-timeout: 600000
      leak-detection-threshold: 0
      initialization-fail-timeout: 1

  # Quartz 相关配置
  quartz:
    auto-startup: false
    job-store-type: jdbc
    jdbc:
      initialize-schema: never
    properties:
      org.quartz.jobStore.isClustered: true
      org.quartz.jobStore.class: org.springframework.scheduling.quartz.LocalDataSourceJobStore
      org.quartz.scheduler.instanceId: AUTO
      org.quartz.jobStore.tablePrefix: QRTZ_
      org.quartz.jobStore.acquireTriggersWithinLock: true
      org.quartz.scheduler.instanceName: DolphinScheduler      
      org.quartz.jobStore.useProperties: false
      org.quartz.jobStore.misfireThreshold: 60000    
      org.quartz.scheduler.makeSchedulerThreadDaemon: true
      org.quartz.jobStore.driverDelegateClass: org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
      org.quartz.jobStore.clusterCheckinInterval: 5000
      org.quartz.threadPool.class: org.apache.dolphinscheduler.scheduler.quartz.QuartzZeroSizeThreadPool      

  mvc:
    pathmatch:
      matching-strategy: ANT_PATH_MATCHER

management:
  endpoints:
    web:
      exposure:
        include: '*'
  endpoint:
    health:
      enabled: true
      show-details: always
  health:
    db:
      enabled: true
    defaults:
      enabled: false
  metrics:
    tags:
      application: ${spring.application.name}

# 注册中心配置
registry:
  type: zookeeper
  zookeeper:
    namespace: dolphinscheduler 
    connect-string: h141:2181,h143:2181,h142:2181
    retry-policy:
      base-sleep-time: 60ms
      max-sleep: 300ms
      max-retries: 5
    session-timeout: 30s
    connection-timeout: 30s
    block-until-connected: 600ms
    digest: ~

api:
  audit-enable: false
  # Traffic control, if you turn on this config, the maximum number of request/s will be limited.
  # global max request number per second
  # default tenant-level max request number
  traffic-control:
      global-switch: false
      max-global-qps-rate: 300
      tenant-switch: false
      default-tenant-qps-rate: 10
        #customize-tenant-qps-rate:
        # eg.
      #tenant1: 11
      #tenant2: 20
  python-gateway:
    # Weather enable python gateway server or not. The default value is false.
    enabled: false
    # Authentication token for connection from python api to python gateway server. Should be changed the default value
    # when you deploy in public network.
    auth-token: jwUDzpLsNKEFER4*a8gruBH_GsAurNxU7A@Xc
    # The address of Python gateway server start. Set its value to `0.0.0.0` if your Python API run in different
    # between Python gateway server. It could be be specific to other address like `127.0.0.1` or `localhost`
    gateway-server-address: 0.0.0.0
    # The port of Python gateway server start. Define which port you could connect to Python gateway server from
    # Python API side.
    gateway-server-port: 25333
    # The address of Python callback client.
    python-address: 127.0.0.1
    # The port of Python callback client.
    python-port: 25334
    # Close connection of socket server if no other request accept after x milliseconds. Define value is (0 = infinite),
    # and socket server would never close even though no requests accept
    connect-timeout: 0
    # Close each active connection of socket server if python program not active after x milliseconds. Define value is
    # (0 = infinite), and socket server would never close even though no requests accept
    read-timeout: 0

metrics:
  enabled: true

security:
  authentication:
    # Authentication types (supported types: PASSWORD,LDAP,CASDOOR_SSO)
    type: PASSWORD 
    # IF you set type `LDAP`, below config will be effective
    ldap:
      # ldap server config
      urls: ldap://ldap.forumsys.com:389/  
      base-dn: dc=example,dc=com   
      username: cn=read-only-admin,dc=example,dc=com
      password: password
      user:
        # admin userId when you use LDAP login
        admin: read-only-admin  
        identity-attribute: uid
        email-attribute: mail
        # action when ldap user is not exist (supported types: CREATE,DENY)
        not-exist-action: CREATE
    ssl:
      enable: false
      # jks file absolute path && password
      trust-store: /ldapkeystore.jks
      trust-store-password: password

    casdoor:
      user:
        admin: admin

    oauth2:
      enable: false
      provider:
        github:
          authorizationUri: "abc"
          redirectUri: "abc"
          clientId: "abc"
          clientSecret: "abc"
          tokenUri: "abc"
          userInfoUri: "abc"
          callbackUrl: "abc"
          iconUri: "abc"
          provider: github
        google:
          authorizationUri: "abc"
          redirectUri: "abc"
          clientId: "abc"
          clientSecret: "abc"
          tokenUri: "abc"
          userInfoUri: "abc"
          callbackUrl: "abc"
          iconUri: "abc"
          provider: google

casdoor:
  # Casdoor 服务器 URL
  endpoint: Your Casdoor server url
  # Casdoor 中的 ID
  client-id: Casdoor Client ID
  # Casdoor 中的密钥
  client-secret: Casdoor Client Secret
  # Casdoor 中的证书
  certificate: Casdoor Certificate
  # Casdoor 中的组织名称
  organization-name: casdoor organization name
  # Casdoor 中的应用名称
  application-name: casdoor application name
  # dolphinscheduler 登录 URL
  redirect-url: DolphinScheduler 登录地址

# Traffic control, if you turn on this config, the maximum number of request/s will be limited.
# global max request number per second
# default tenant-level max request number
traffic:
  control:
    global-switch: false
    max-global-qps-rate: 300
    tenant-switch: false
    default-tenant-qps-rate: 10
    # customize-tenant-qps-rate:  
      # eg.
      #tenant1: 10
      #tenant2: 10

# Override by profile

---
spring:
  config:
    activate:
      on-profile: mysql
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: "jdbc:mysql://192.168.3.240:4408/dolphinscheduler?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false"
    username: dolphins
    password: dolphins123
  quartz:
    properties:
      org.quartz.jobStore.driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate

What you expected to happen

fix the bug of api server

How to reproduce

The API Server disable the oauth2,but fails to start

Anything else

No response

Version

3.2.x

Are you willing to submit PR?

Code of Conduct

github-actions[bot] commented 2 months ago

Search before asking

What happened

Error message

The API Server of DolphinScheduler 3.2.2 fails to start with the error message as below:

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
[ERROR] 2024-08-27 13:45:57.395 +0800 o.s.b.SpringApplication:[824] - Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cloudController': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cloudServiceImpl' defined in URL [jar:file:/usr/hadoop/dolphinscheduler/api-server/libs/dolphinscheduler-api-3.2.2.jar!/org/apache/dolphinscheduler/api/service/impl/CloudServiceImpl.class]: Instantiation of bean failed; nested exception is java.lang.ExceptionInInitializerError
        at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessProperties(CommonAnnotationBeanPostProcessor.java:332)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1431)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:619)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:955)
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583)
        at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147)
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:734)
        at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:308)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1295)
        at org.apache.dolphinscheduler.api.ApiApplicationServer.main(ApiApplicationServer.java:65)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cloudServiceImpl' defined in URL [jar:file:/usr/hadoop/dolphinscheduler/api-server/libs/dolphinscheduler-api-3.2.2.jar!/org/apache/dolphinscheduler/api/service/impl/CloudServiceImpl.class]: Instantiation of bean failed; nested exception is java.lang.ExceptionInInitializerError
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1334)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1232)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
        at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1391)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1311)
        at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.autowireResource(CommonAnnotationBeanPostProcessor.java:544)
        at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.getResource(CommonAnnotationBeanPostProcessor.java:520)
        at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor$ResourceElement.getResourceToInject(CommonAnnotationBeanPostProcessor.java:673)
        at org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.inject(InjectionMetadata.java:228)
        at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:119)
        at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessProperties(CommonAnnotationBeanPostProcessor.java:329)
        ... 17 common frames omitted
Caused by: java.lang.ExceptionInInitializerError: null
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
        at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:211)
        at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:87)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1326)
        ... 33 common frames omitted
Caused by: java.lang.IllegalArgumentException: Must provide non-null values for clientId, tenantId, clientSecret properties in ClientSecretCredentialBuilder
        at com.azure.identity.implementation.util.ValidationUtil.validate(ValidationUtil.java:27)
        at com.azure.identity.ClientSecretCredentialBuilder.build(ClientSecretCredentialBuilder.java:74)
        at org.apache.dolphinscheduler.api.service.impl.CloudServiceImpl.<clinit>(CloudServiceImpl.java:55)
        ... 40 common frames omitted

Application.yml

The configuration in $APISERVER_HOME/conf/application.yml as below:

server:
  port: 12345
  servlet:
    session:
      timeout: 120m
    context-path: /dolphinscheduler/
  compression:
    enabled: true
    mime-types: text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json,application/xml
  jetty:
    max-http-form-post-size: 5000000

# 数据库连接
spring:
  banner:
    charset: UTF-8
  jackson:
    time-zone: GMT+8
    date-format: "yyyy-MM-dd HH:mm:ss"
  servlet:
    multipart:
      max-file-size: 1024MB
      max-request-size: 1024MB
  messages:
    basename: i18n/messages 
  # 数据库连接  
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: "jdbc:mysql://192.168.3.240:4408/dolphinscheduler?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false"
    username: dolphins
    password: dolphins123
    hikari:
      connection-test-query: select 1
      minimum-idle: 5
      auto-commit: true
      validation-timeout: 3000
      pool-name: DolphinScheduler
      maximum-pool-size: 50
      connection-timeout: 30000
      idle-timeout: 600000
      leak-detection-threshold: 0
      initialization-fail-timeout: 1

  # Quartz 相关配置
  quartz:
    auto-startup: false
    job-store-type: jdbc
    jdbc:
      initialize-schema: never
    properties:
      org.quartz.jobStore.isClustered: true
      org.quartz.jobStore.class: org.springframework.scheduling.quartz.LocalDataSourceJobStore
      org.quartz.scheduler.instanceId: AUTO
      org.quartz.jobStore.tablePrefix: QRTZ_
      org.quartz.jobStore.acquireTriggersWithinLock: true
      org.quartz.scheduler.instanceName: DolphinScheduler      
      org.quartz.jobStore.useProperties: false
      org.quartz.jobStore.misfireThreshold: 60000    
      org.quartz.scheduler.makeSchedulerThreadDaemon: true
      org.quartz.jobStore.driverDelegateClass: org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
      org.quartz.jobStore.clusterCheckinInterval: 5000
      org.quartz.threadPool.class: org.apache.dolphinscheduler.scheduler.quartz.QuartzZeroSizeThreadPool      

  mvc:
    pathmatch:
      matching-strategy: ANT_PATH_MATCHER

management:
  endpoints:
    web:
      exposure:
        include: '*'
  endpoint:
    health:
      enabled: true
      show-details: always
  health:
    db:
      enabled: true
    defaults:
      enabled: false
  metrics:
    tags:
      application: ${spring.application.name}

# 注册中心配置
registry:
  type: zookeeper
  zookeeper:
    namespace: dolphinscheduler 
    connect-string: h141:2181,h143:2181,h142:2181
    retry-policy:
      base-sleep-time: 60ms
      max-sleep: 300ms
      max-retries: 5
    session-timeout: 30s
    connection-timeout: 30s
    block-until-connected: 600ms
    digest: ~

api:
  audit-enable: false
  # Traffic control, if you turn on this config, the maximum number of request/s will be limited.
  # global max request number per second
  # default tenant-level max request number
  traffic-control:
      global-switch: false
      max-global-qps-rate: 300
      tenant-switch: false
      default-tenant-qps-rate: 10
        #customize-tenant-qps-rate:
        # eg.
      #tenant1: 11
      #tenant2: 20
  python-gateway:
    # Weather enable python gateway server or not. The default value is false.
    enabled: false
    # Authentication token for connection from python api to python gateway server. Should be changed the default value
    # when you deploy in public network.
    auth-token: jwUDzpLsNKEFER4*a8gruBH_GsAurNxU7A@Xc
    # The address of Python gateway server start. Set its value to `0.0.0.0` if your Python API run in different
    # between Python gateway server. It could be be specific to other address like `127.0.0.1` or `localhost`
    gateway-server-address: 0.0.0.0
    # The port of Python gateway server start. Define which port you could connect to Python gateway server from
    # Python API side.
    gateway-server-port: 25333
    # The address of Python callback client.
    python-address: 127.0.0.1
    # The port of Python callback client.
    python-port: 25334
    # Close connection of socket server if no other request accept after x milliseconds. Define value is (0 = infinite),
    # and socket server would never close even though no requests accept
    connect-timeout: 0
    # Close each active connection of socket server if python program not active after x milliseconds. Define value is
    # (0 = infinite), and socket server would never close even though no requests accept
    read-timeout: 0

metrics:
  enabled: true

security:
  authentication:
    # Authentication types (supported types: PASSWORD,LDAP,CASDOOR_SSO)
    type: PASSWORD 
    # IF you set type `LDAP`, below config will be effective
    ldap:
      # ldap server config
      urls: ldap://ldap.forumsys.com:389/  
      base-dn: dc=example,dc=com   
      username: cn=read-only-admin,dc=example,dc=com
      password: password
      user:
        # admin userId when you use LDAP login
        admin: read-only-admin  
        identity-attribute: uid
        email-attribute: mail
        # action when ldap user is not exist (supported types: CREATE,DENY)
        not-exist-action: CREATE
    ssl:
      enable: false
      # jks file absolute path && password
      trust-store: /ldapkeystore.jks
      trust-store-password: password

    casdoor:
      user:
        admin: admin

    oauth2:
      enable: false
      provider:
        github:
          authorizationUri: "abc"
          redirectUri: "abc"
          clientId: "abc"
          clientSecret: "abc"
          tokenUri: "abc"
          userInfoUri: "abc"
          callbackUrl: "abc"
          iconUri: "abc"
          provider: github
        google:
          authorizationUri: "abc"
          redirectUri: "abc"
          clientId: "abc"
          clientSecret: "abc"
          tokenUri: "abc"
          userInfoUri: "abc"
          callbackUrl: "abc"
          iconUri: "abc"
          provider: google

casdoor:
  # Casdoor 服务器 URL
  endpoint: Your Casdoor server url
  # Casdoor 中的 ID
  client-id: Casdoor Client ID
  # Casdoor 中的密钥
  client-secret: Casdoor Client Secret
  # Casdoor 中的证书
  certificate: Casdoor Certificate
  # Casdoor 中的组织名称
  organization-name: casdoor organization name
  # Casdoor 中的应用名称
  application-name: casdoor application name
  # dolphinscheduler 登录 URL
  redirect-url: DolphinScheduler 登录地址

# Traffic control, if you turn on this config, the maximum number of request/s will be limited.
# global max request number per second
# default tenant-level max request number
traffic:
  control:
    global-switch: false
    max-global-qps-rate: 300
    tenant-switch: false
    default-tenant-qps-rate: 10
    # customize-tenant-qps-rate:  
      # eg.
      #tenant1: 10
      #tenant2: 10

# Override by profile

---
spring:
  config:
    activate:
      on-profile: mysql
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: "jdbc:mysql://192.168.3.240:4408/dolphinscheduler?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false"
    username: dolphins
    password: dolphins123
  quartz:
    properties:
      org.quartz.jobStore.driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate

What you expected to happen

fix the bug of api server

How to reproduce

The API Server disable the oauth2,but fails to start

Anything else

No response

Version

3.2.x

Are you willing to submit PR?

Code of Conduct

SbloodyS commented 2 months ago

The main reason is Caused by: java.lang.IllegalArgumentException: Must provide non-null values for clientId, tenantId, clientSecret properties in ClientSecretCredentialBuilder

github-actions[bot] commented 1 month ago

This issue has been automatically marked as stale because it has not had recent activity for 30 days. It will be closed in next 7 days if no further activity occurs.

github-actions[bot] commented 4 weeks ago

This issue has been closed because it has not received response for too long time. You could reopen it if you encountered similar problems in the future.