diff --git a/logs/data-dump-error.log b/logs/data-dump-error.log deleted file mode 100644 index 7e0988d..0000000 --- a/logs/data-dump-error.log +++ /dev/null @@ -1,325 +0,0 @@ -[data-dump] 2025-05-09 16:32:52.727 ERROR 28500 [main] com.zaxxer.hikari.pool.HikariPool[594] HikariPool-1 - Exception during pool initialization. - -com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure - -The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. - at com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:174) - at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:64) - at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:828) - at com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:448) - at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:241) - at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198) - at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138) - at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:364) - at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206) - at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:476) - at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:561) - at com.zaxxer.hikari.pool.HikariPool.(HikariPool.java:115) - at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) - at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:159) - at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:117) - at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:80) - at org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:80) - at org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:67) - at org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:337) - at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:86) - at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:62) - at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:325) - at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156) - at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109) - at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:81) - at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62) - at jdk.proxy2/jdk.proxy2.$Proxy97.query(Unknown Source) - at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:151) - at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:145) - at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:140) - 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.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:427) - at jdk.proxy2/jdk.proxy2.$Proxy74.selectList(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:224) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:166) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy75.list(Unknown Source) - at com.celnet.datadump.config.SalesforceExecutor.init(SalesforceExecutor.java:36) - 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.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:333) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:157) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:440) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1796) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) - 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:1389) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1309) - at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:656) - at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:639) - at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:119) - at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399) - 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.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1389) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1309) - at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:656) - at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:639) - at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:119) - at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399) - 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:953) - 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:145) - at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:775) - at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:448) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:339) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1365) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354) - at com.celnet.datadump.DataDumpApplication.main(DataDumpApplication.java:13) -Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure - -The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. - 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 com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61) - at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:105) - at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:151) - at com.mysql.cj.exceptions.ExceptionFactory.createCommunicationsException(ExceptionFactory.java:167) - at com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:89) - at com.mysql.cj.NativeSession.connect(NativeSession.java:120) - at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:948) - at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:818) - ... 93 common frames omitted -Caused by: java.net.ConnectException: Connection refused: no further information - at java.base/sun.nio.ch.Net.pollConnect(Native Method) - at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:672) - at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:547) - at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:602) - at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327) - at java.base/java.net.Socket.connect(Socket.java:633) - at com.mysql.cj.protocol.StandardSocketFactory.connect(StandardSocketFactory.java:153) - at com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:63) - ... 96 common frames omitted - -[data-dump] 2025-05-09 16:32:52.752 ERROR 28500 [main] org.springframework.boot.SpringApplication[865] Application run failed - -org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'fileManagerController': Unsatisfied dependency expressed through field 'fileManagerService'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'fileManagerServiceImpl': Unsatisfied dependency expressed through field 'salesforceExecutor'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'salesforceExecutor': Invocation of init method failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: -### Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure - -The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. -### The error may exist in file [D:\data-dump\target\classes\mapper\CustomMapper.xml] -### The error may involve com.celnet.datadump.mapper.CustomMapper.list -### The error occurred while executing a query -### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure - -The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. - at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:659) - at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:639) - at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:119) - at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399) - 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:953) - 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:145) - at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:775) - at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:448) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:339) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1365) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354) - at com.celnet.datadump.DataDumpApplication.main(DataDumpApplication.java:13) -Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'fileManagerServiceImpl': Unsatisfied dependency expressed through field 'salesforceExecutor'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'salesforceExecutor': Invocation of init method failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: -### Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure - -The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. -### The error may exist in file [D:\data-dump\target\classes\mapper\CustomMapper.xml] -### The error may involve com.celnet.datadump.mapper.CustomMapper.list -### The error occurred while executing a query -### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure - -The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. - at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:659) - at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:639) - at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:119) - at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399) - 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.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1389) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1309) - at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:656) - ... 20 common frames omitted -Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'salesforceExecutor': Invocation of init method failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: -### Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure - -The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. -### The error may exist in file [D:\data-dump\target\classes\mapper\CustomMapper.xml] -### The error may involve com.celnet.datadump.mapper.CustomMapper.list -### The error occurred while executing a query -### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure - -The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:160) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:440) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1796) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) - 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:1389) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1309) - at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:656) - ... 34 common frames omitted -Caused by: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: -### Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure - -The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. -### The error may exist in file [D:\data-dump\target\classes\mapper\CustomMapper.xml] -### The error may involve com.celnet.datadump.mapper.CustomMapper.list -### The error occurred while executing a query -### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure - -The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. - at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:96) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441) - at jdk.proxy2/jdk.proxy2.$Proxy74.selectList(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:224) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:166) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy75.list(Unknown Source) - at com.celnet.datadump.config.SalesforceExecutor.init(SalesforceExecutor.java:36) - 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.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:333) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:157) - ... 46 common frames omitted -Caused by: org.apache.ibatis.exceptions.PersistenceException: -### Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure - -The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. -### The error may exist in file [D:\data-dump\target\classes\mapper\CustomMapper.xml] -### The error may involve com.celnet.datadump.mapper.CustomMapper.list -### The error occurred while executing a query -### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure - -The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. - at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30) - at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:153) - at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:145) - at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:140) - 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.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:427) - ... 61 common frames omitted -Caused by: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure - -The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. - at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:83) - at org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:80) - at org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:67) - at org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:337) - at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:86) - at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:62) - at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:325) - at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156) - at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109) - at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:81) - at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62) - at jdk.proxy2/jdk.proxy2.$Proxy97.query(Unknown Source) - at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:151) - ... 68 common frames omitted -Caused by: com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure - -The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. - at com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:174) - at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:64) - at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:828) - at com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:448) - at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:241) - at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198) - at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138) - at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:364) - at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206) - at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:476) - at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:561) - at com.zaxxer.hikari.pool.HikariPool.(HikariPool.java:115) - at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) - at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:159) - at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:117) - at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:80) - ... 80 common frames omitted -Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure - -The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. - 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 com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61) - at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:105) - at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:151) - at com.mysql.cj.exceptions.ExceptionFactory.createCommunicationsException(ExceptionFactory.java:167) - at com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:89) - at com.mysql.cj.NativeSession.connect(NativeSession.java:120) - at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:948) - at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:818) - ... 93 common frames omitted -Caused by: java.net.ConnectException: Connection refused: no further information - at java.base/sun.nio.ch.Net.pollConnect(Native Method) - at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:672) - at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:547) - at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:602) - at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327) - at java.base/java.net.Socket.connect(Socket.java:633) - at com.mysql.cj.protocol.StandardSocketFactory.connect(StandardSocketFactory.java:153) - at com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:63) - ... 96 common frames omitted - diff --git a/logs/data-dump.2025-02-11.0.log.gz b/logs/data-dump.2025-02-11.0.log.gz deleted file mode 100644 index d39d117..0000000 Binary files a/logs/data-dump.2025-02-11.0.log.gz and /dev/null differ diff --git a/logs/data-dump.2025-02-13.0.log.gz b/logs/data-dump.2025-02-13.0.log.gz deleted file mode 100644 index cb32fb7..0000000 Binary files a/logs/data-dump.2025-02-13.0.log.gz and /dev/null differ diff --git a/logs/data-dump.log b/logs/data-dump.log deleted file mode 100644 index a054462..0000000 --- a/logs/data-dump.log +++ /dev/null @@ -1,348 +0,0 @@ -[data-dump] 2025-05-09 16:32:50.246 INFO 28500 [main] com.celnet.datadump.DataDumpApplication[55] Starting DataDumpApplication using Java 17.0.11 on DESKTOP-368IV5S with PID 28500 (D:\data-dump\target\classes started by Kris in D:\data-dump) -[data-dump] 2025-05-09 16:32:50.253 INFO 28500 [main] com.celnet.datadump.DataDumpApplication[681] The following 1 profile is active: "prod" -[data-dump] 2025-05-09 16:32:51.188 INFO 28500 [main] org.springframework.boot.web.embedded.tomcat.TomcatWebServer[108] Tomcat initialized with port(s): 8888 (http) -[data-dump] 2025-05-09 16:32:51.194 INFO 28500 [main] org.apache.coyote.http11.Http11NioProtocol[173] Initializing ProtocolHandler ["http-nio-8888"] -[data-dump] 2025-05-09 16:32:51.194 INFO 28500 [main] org.apache.catalina.core.StandardService[173] Starting service [Tomcat] -[data-dump] 2025-05-09 16:32:51.195 INFO 28500 [main] org.apache.catalina.core.StandardEngine[173] Starting Servlet engine: [Apache Tomcat/9.0.60] -[data-dump] 2025-05-09 16:32:51.271 INFO 28500 [main] org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/][173] Initializing Spring embedded WebApplicationContext -[data-dump] 2025-05-09 16:32:51.272 INFO 28500 [main] org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext[290] Root WebApplicationContext: initialization completed in 887 ms -[data-dump] 2025-05-09 16:32:51.674 INFO 28500 [main] com.zaxxer.hikari.HikariDataSource[110] HikariPool-1 - Starting... -[data-dump] 2025-05-09 16:32:52.727 ERROR 28500 [main] com.zaxxer.hikari.pool.HikariPool[594] HikariPool-1 - Exception during pool initialization. - -com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure - -The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. - at com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:174) - at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:64) - at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:828) - at com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:448) - at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:241) - at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198) - at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138) - at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:364) - at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206) - at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:476) - at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:561) - at com.zaxxer.hikari.pool.HikariPool.(HikariPool.java:115) - at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) - at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:159) - at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:117) - at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:80) - at org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:80) - at org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:67) - at org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:337) - at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:86) - at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:62) - at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:325) - at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156) - at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109) - at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:81) - at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62) - at jdk.proxy2/jdk.proxy2.$Proxy97.query(Unknown Source) - at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:151) - at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:145) - at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:140) - 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.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:427) - at jdk.proxy2/jdk.proxy2.$Proxy74.selectList(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:224) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:166) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy75.list(Unknown Source) - at com.celnet.datadump.config.SalesforceExecutor.init(SalesforceExecutor.java:36) - 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.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:333) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:157) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:440) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1796) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) - 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:1389) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1309) - at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:656) - at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:639) - at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:119) - at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399) - 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.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1389) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1309) - at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:656) - at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:639) - at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:119) - at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399) - 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:953) - 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:145) - at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:775) - at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:448) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:339) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1365) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354) - at com.celnet.datadump.DataDumpApplication.main(DataDumpApplication.java:13) -Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure - -The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. - 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 com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61) - at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:105) - at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:151) - at com.mysql.cj.exceptions.ExceptionFactory.createCommunicationsException(ExceptionFactory.java:167) - at com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:89) - at com.mysql.cj.NativeSession.connect(NativeSession.java:120) - at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:948) - at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:818) - ... 93 common frames omitted -Caused by: java.net.ConnectException: Connection refused: no further information - at java.base/sun.nio.ch.Net.pollConnect(Native Method) - at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:672) - at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:547) - at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:602) - at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327) - at java.base/java.net.Socket.connect(Socket.java:633) - at com.mysql.cj.protocol.StandardSocketFactory.connect(StandardSocketFactory.java:153) - at com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:63) - ... 96 common frames omitted - -[data-dump] 2025-05-09 16:32:52.732 WARN 28500 [main] org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext[591] Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'fileManagerController': Unsatisfied dependency expressed through field 'fileManagerService'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'fileManagerServiceImpl': Unsatisfied dependency expressed through field 'salesforceExecutor'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'salesforceExecutor': Invocation of init method failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: -### Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure - -The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. -### The error may exist in file [D:\data-dump\target\classes\mapper\CustomMapper.xml] -### The error may involve com.celnet.datadump.mapper.CustomMapper.list -### The error occurred while executing a query -### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure - -The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. -[data-dump] 2025-05-09 16:32:52.734 INFO 28500 [main] org.apache.catalina.core.StandardService[173] Stopping service [Tomcat] -[data-dump] 2025-05-09 16:32:52.743 INFO 28500 [main] org.springframework.boot.autoconfigure.logging.ConditionEvaluationReportLoggingListener[136] - -Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. -[data-dump] 2025-05-09 16:32:52.752 ERROR 28500 [main] org.springframework.boot.SpringApplication[865] Application run failed - -org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'fileManagerController': Unsatisfied dependency expressed through field 'fileManagerService'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'fileManagerServiceImpl': Unsatisfied dependency expressed through field 'salesforceExecutor'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'salesforceExecutor': Invocation of init method failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: -### Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure - -The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. -### The error may exist in file [D:\data-dump\target\classes\mapper\CustomMapper.xml] -### The error may involve com.celnet.datadump.mapper.CustomMapper.list -### The error occurred while executing a query -### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure - -The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. - at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:659) - at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:639) - at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:119) - at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399) - 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:953) - 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:145) - at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:775) - at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:448) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:339) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1365) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354) - at com.celnet.datadump.DataDumpApplication.main(DataDumpApplication.java:13) -Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'fileManagerServiceImpl': Unsatisfied dependency expressed through field 'salesforceExecutor'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'salesforceExecutor': Invocation of init method failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: -### Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure - -The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. -### The error may exist in file [D:\data-dump\target\classes\mapper\CustomMapper.xml] -### The error may involve com.celnet.datadump.mapper.CustomMapper.list -### The error occurred while executing a query -### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure - -The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. - at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:659) - at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:639) - at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:119) - at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399) - 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.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1389) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1309) - at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:656) - ... 20 common frames omitted -Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'salesforceExecutor': Invocation of init method failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: -### Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure - -The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. -### The error may exist in file [D:\data-dump\target\classes\mapper\CustomMapper.xml] -### The error may involve com.celnet.datadump.mapper.CustomMapper.list -### The error occurred while executing a query -### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure - -The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:160) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:440) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1796) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) - 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:1389) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1309) - at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:656) - ... 34 common frames omitted -Caused by: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: -### Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure - -The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. -### The error may exist in file [D:\data-dump\target\classes\mapper\CustomMapper.xml] -### The error may involve com.celnet.datadump.mapper.CustomMapper.list -### The error occurred while executing a query -### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure - -The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. - at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:96) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441) - at jdk.proxy2/jdk.proxy2.$Proxy74.selectList(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:224) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:166) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy75.list(Unknown Source) - at com.celnet.datadump.config.SalesforceExecutor.init(SalesforceExecutor.java:36) - 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.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:333) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:157) - ... 46 common frames omitted -Caused by: org.apache.ibatis.exceptions.PersistenceException: -### Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure - -The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. -### The error may exist in file [D:\data-dump\target\classes\mapper\CustomMapper.xml] -### The error may involve com.celnet.datadump.mapper.CustomMapper.list -### The error occurred while executing a query -### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure - -The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. - at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30) - at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:153) - at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:145) - at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:140) - 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.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:427) - ... 61 common frames omitted -Caused by: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure - -The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. - at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:83) - at org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:80) - at org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:67) - at org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:337) - at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:86) - at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:62) - at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:325) - at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156) - at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109) - at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:81) - at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62) - at jdk.proxy2/jdk.proxy2.$Proxy97.query(Unknown Source) - at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:151) - ... 68 common frames omitted -Caused by: com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure - -The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. - at com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:174) - at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:64) - at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:828) - at com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:448) - at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:241) - at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198) - at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138) - at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:364) - at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206) - at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:476) - at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:561) - at com.zaxxer.hikari.pool.HikariPool.(HikariPool.java:115) - at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) - at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:159) - at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:117) - at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:80) - ... 80 common frames omitted -Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure - -The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. - 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 com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61) - at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:105) - at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:151) - at com.mysql.cj.exceptions.ExceptionFactory.createCommunicationsException(ExceptionFactory.java:167) - at com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:89) - at com.mysql.cj.NativeSession.connect(NativeSession.java:120) - at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:948) - at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:818) - ... 93 common frames omitted -Caused by: java.net.ConnectException: Connection refused: no further information - at java.base/sun.nio.ch.Net.pollConnect(Native Method) - at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:672) - at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:547) - at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:602) - at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327) - at java.base/java.net.Socket.connect(Socket.java:633) - at com.mysql.cj.protocol.StandardSocketFactory.connect(StandardSocketFactory.java:153) - at com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:63) - ... 96 common frames omitted - diff --git a/pom.xml b/pom.xml index f6adb63..7c2c26d 100644 --- a/pom.xml +++ b/pom.xml @@ -61,7 +61,28 @@ ${fastjson.version} + + + cn.hutool + hutool-all + 5.8.5 + + + com.opencsv + opencsv + 5.8 + + + org.apache.commons + commons-csv + 1.10.0 + + + io.github.ljwlgl + common-util + 2.1.0 + com.baomidou @@ -217,7 +238,7 @@ org.springframework.boot spring-boot-maven-plugin - + org.apache.maven.pluginsmaven-compiler-plugin88 diff --git a/src/main/java/com/celnet/datadump/config/SalesforceConnect.java b/src/main/java/com/celnet/datadump/config/SalesforceConnect.java index 1f1cd52..b271339 100644 --- a/src/main/java/com/celnet/datadump/config/SalesforceConnect.java +++ b/src/main/java/com/celnet/datadump/config/SalesforceConnect.java @@ -2,7 +2,9 @@ package com.celnet.datadump.config; import com.alibaba.fastjson.JSONArray; import com.celnet.datadump.mapper.CustomMapper; +import com.celnet.datadump.util.BulkUtil; import com.google.common.collect.Lists; +import com.sforce.async.BulkConnection; import com.sforce.soap.partner.PartnerConnection; import com.sforce.ws.ConnectionException; import com.sforce.ws.ConnectorConfig; @@ -61,7 +63,47 @@ public class SalesforceConnect { config.setReadTimeout(60 * 60 * 1000); return new PartnerConnection(config); } catch (ConnectionException e) { - e.printStackTrace(); + log.error("exception message", e); + return null; + } + } + + /** + * 创建Bulk连接 + * @author kris + */ + public BulkConnection createBulkConnect() { + try { + List> poll = customerMapper.list("code,value","org_config",null); + //遍历poll,找出code值为SOURCE_ORG_URL,SOURCE_ORG_USERNAME,SOURCE_ORG_PASSWORD的value值 + Map map = new HashMap<>(); + for (Map map1 : poll) { + if ("SOURCE_ORG_URL".equals(map1.get("code"))) { + map.put("url", (String) map1.get("value")); + } + if ("SOURCE_ORG_USERNAME".equals(map1.get("code"))) { + map.put("username", (String) map1.get("value")); + } + if ("SOURCE_ORG_PASSWORD".equals(map1.get("code"))) { + map.put("password", String.valueOf(map1.get("value"))); + } + } +// +// String username = map.get("username"); +// ConnectorConfig config = new ConnectorConfig(); +// config.setUsername(username); +// config.setPassword(map.get("password")); +// String url = map.get("url"); +// config.setAuthEndpoint(url); +// config.setServiceEndpoint(url); +// config.setConnectionTimeout(60 * 60 * 1000); +// config.setReadTimeout(60 * 60 * 1000); +// PartnerConnection connection = new PartnerConnection(config); +// config.setRestEndpoint(url); +// config.setSessionId(connection.getSessionHeader().getSessionId()); + return BulkUtil.getBulkConnection(map.get("username"),map.get("password"),map.get("url")); + } catch (Exception e) { + log.error("exception message", e); return null; } } diff --git a/src/main/java/com/celnet/datadump/config/SalesforceTargetConnect.java b/src/main/java/com/celnet/datadump/config/SalesforceTargetConnect.java index 0498e3e..6ebf955 100644 --- a/src/main/java/com/celnet/datadump/config/SalesforceTargetConnect.java +++ b/src/main/java/com/celnet/datadump/config/SalesforceTargetConnect.java @@ -1,7 +1,9 @@ package com.celnet.datadump.config; import com.celnet.datadump.mapper.CustomMapper; +import com.celnet.datadump.util.BulkUtil; import com.google.common.collect.Lists; +import com.sforce.async.BulkConnection; import com.sforce.soap.partner.PartnerConnection; import com.sforce.ws.ConnectionException; import com.sforce.ws.ConnectorConfig; @@ -56,8 +58,50 @@ public class SalesforceTargetConnect { String orgId = connection.getUserInfo().getOrganizationId(); return connection; } catch (ConnectionException e) { - e.printStackTrace(); + log.error("exception message", e); return null; } } + + /** + * 创建Bulk连接 + * @author kris + */ + public BulkConnection createBulkConnect() { + try { + List> poll = customerMapper.list("code,value","org_config",null); + //遍历poll,找出code值为TARGET_ORG_URL,TARGET_ORG_USERNAME,TARGET_ORG_PASSWORD的value值 + Map map = new HashMap<>(); + for (Map map1 : poll) { + if ("TARGET_ORG_URL".equals(map1.get("code"))) { + map.put("url", (String) map1.get("value")); + } + if ("TARGET_ORG_USERNAME".equals(map1.get("code"))) { + map.put("username", (String) map1.get("value")); + } + if ("TARGET_ORG_PASSWORD".equals(map1.get("code"))) { + map.put("password", (String) map1.get("value")); + } + } + + +// String username = ; +// ConnectorConfig config = new ConnectorConfig(); +// config.setUsername(username); +// config.setPassword(); +// String url = ; +// config.setAuthEndpoint(url); +// config.setServiceEndpoint(url); +// config.setConnectionTimeout(60 * 60 * 1000); +// config.setReadTimeout(60 * 60 * 1000); +// PartnerConnection connection = new PartnerConnection(config); +// config.setRestEndpoint(url); +// config.setSessionId(connection.getSessionHeader().getSessionId()); + return BulkUtil.getBulkConnection(map.get("username"),map.get("password"),map.get("url")); + } catch (Exception e) { + log.error("exception message", e); + return null; + } + } + } diff --git a/src/main/java/com/celnet/datadump/controller/JobController.java b/src/main/java/com/celnet/datadump/controller/JobController.java index a32ba33..9b2faf4 100644 --- a/src/main/java/com/celnet/datadump/controller/JobController.java +++ b/src/main/java/com/celnet/datadump/controller/JobController.java @@ -1,11 +1,13 @@ package com.celnet.datadump.controller; +import com.alibaba.fastjson.JSON; import com.celnet.datadump.entity.DataObject; import com.celnet.datadump.global.Result; import com.celnet.datadump.param.*; import com.celnet.datadump.service.*; import com.celnet.datadump.util.DataUtil; import com.xxl.job.core.biz.model.ReturnT; +import com.xxl.job.core.handler.annotation.XxlJob; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -37,6 +39,8 @@ public class JobController { private CommonService commonService; @Autowired private DataCheckDeletedService dataCheckDeletedService; + @Autowired + private DataImportService dataImportService; @PostMapping("/fileTransform") @ApiOperation("附件解析") @@ -185,4 +189,30 @@ public class JobController { return Result.fail(returnT.getMsg()); } } + + /** + * bulk批量大数据生成newSFID + * @param paramStr + * @author kris + * @return + * @throws Exception + */ + @PostMapping("/dataImportBatchJob") + @ApiOperation("大数据生成newSFID") + public ReturnT dataImportBatchJob(String paramStr) throws Exception { + log.info("dataImportBatchJob execute start .................."); + SalesforceParam param = new SalesforceParam(); + try { + if (StringUtils.isNotBlank(paramStr)) { + param = JSON.parseObject(paramStr, SalesforceParam.class); + } + } catch (Throwable throwable) { + return new ReturnT<>(500, "参数解析失败!"); + } + param.setType(1); + // 参数转换 + param.setBeginCreateDate(param.getBeginDate()); + param.setEndCreateDate(param.getEndDate()); + return dataImportService.immigrationBatch(param); + } } diff --git a/src/main/java/com/celnet/datadump/job/DataDumpJob.java b/src/main/java/com/celnet/datadump/job/DataDumpJob.java index f27cdb4..3e17114 100644 --- a/src/main/java/com/celnet/datadump/job/DataDumpJob.java +++ b/src/main/java/com/celnet/datadump/job/DataDumpJob.java @@ -122,6 +122,31 @@ public class DataDumpJob { return dataImportService.immigration(param); } + /** + * bulk批量大数据生成newSFID + * @param paramStr + * @author kris + * @return + * @throws Exception + */ + @XxlJob("dataImportBatchJob") + public ReturnT dataImportBatchJob(String paramStr) throws Exception { + log.info("dataImportBatchJob execute start .................."); + SalesforceParam param = new SalesforceParam(); + try { + if (StringUtils.isNotBlank(paramStr)) { + param = JSON.parseObject(paramStr, SalesforceParam.class); + } + } catch (Throwable throwable) { + return new ReturnT<>(500, "参数解析失败!"); + } + param.setType(1); + // 参数转换 + param.setBeginCreateDate(param.getBeginDate()); + param.setEndCreateDate(param.getEndDate()); + return dataImportService.immigrationBatch(param); + } + /** * 更新目标org数据 diff --git a/src/main/java/com/celnet/datadump/mapper/CustomMapper.java b/src/main/java/com/celnet/datadump/mapper/CustomMapper.java index b702dcd..de93003 100644 --- a/src/main/java/com/celnet/datadump/mapper/CustomMapper.java +++ b/src/main/java/com/celnet/datadump/mapper/CustomMapper.java @@ -1,6 +1,7 @@ package com.celnet.datadump.mapper; import com.celnet.datadump.param.SalesforceParam; +import cn.hutool.json.JSONObject; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -102,6 +103,16 @@ public interface CustomMapper { */ public List> list(@Param("select") String select, @Param("api") String api, @Param("sql") String sql); + /** + * 通用表数据获取,返回JosnObject + * + * @param api 参数 + * @param select 参数 + * @param sql 参数 + * @return list + */ + public List listJsonObject(@Param("select") String select, @Param("api") String api, @Param("sql") String sql); + /** * 通用表数据获取 * diff --git a/src/main/java/com/celnet/datadump/service/DataImportService.java b/src/main/java/com/celnet/datadump/service/DataImportService.java index 2772ff3..34785fc 100644 --- a/src/main/java/com/celnet/datadump/service/DataImportService.java +++ b/src/main/java/com/celnet/datadump/service/DataImportService.java @@ -14,6 +14,7 @@ public interface DataImportService { ReturnT immigration(SalesforceParam param) throws Exception; + ReturnT immigrationBatch(SalesforceParam param) throws Exception; ReturnT immigrationUpdate(SalesforceParam param) throws Exception; } diff --git a/src/main/java/com/celnet/datadump/service/impl/DataImportServiceImpl.java b/src/main/java/com/celnet/datadump/service/impl/DataImportServiceImpl.java index a79c367..e316bec 100644 --- a/src/main/java/com/celnet/datadump/service/impl/DataImportServiceImpl.java +++ b/src/main/java/com/celnet/datadump/service/impl/DataImportServiceImpl.java @@ -1,8 +1,9 @@ package com.celnet.datadump.service.impl; +import cn.hutool.core.lang.UUID; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; +import cn.hutool.json.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.celnet.datadump.config.SalesforceExecutor; @@ -15,9 +16,12 @@ import com.celnet.datadump.param.DataDumpParam; import com.celnet.datadump.param.DataDumpSpecialParam; import com.celnet.datadump.param.SalesforceParam; import com.celnet.datadump.service.*; +import com.celnet.datadump.util.BulkUtil; +import com.celnet.datadump.util.CsvConverterUtil; import com.celnet.datadump.util.DataUtil; import com.celnet.datadump.util.EmailUtil; import com.google.common.collect.Lists; +import com.sforce.async.*; import com.sforce.soap.partner.PartnerConnection; import com.sforce.soap.partner.SaveResult; import com.sforce.soap.partner.sobject.SObject; @@ -30,7 +34,14 @@ import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.time.DateUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.batch.BatchProperties; import org.springframework.stereotype.Service; + +import javax.swing.text.Utilities; +import java.io.ByteArrayInputStream; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; @@ -98,6 +109,25 @@ public class DataImportServiceImpl implements DataImportService { } } + @Override + public ReturnT immigrationBatch(SalesforceParam param) throws Exception { + List> futures = Lists.newArrayList(); + try { + if (StringUtils.isNotBlank(param.getApi())) { + // 手动任务 + ReturnT result = manualImmigrationBatch(param, futures); + if (result != null) { + return result; + } + } + return ReturnT.SUCCESS; + } catch (Exception exception) { + salesforceExecutor.remove(futures.toArray(new Future[]{})); + log.error("immigration error", exception); + throw exception; + } + } + @Override public ReturnT manualImmigration(SalesforceParam param, List> futures) throws Exception { List apis; @@ -178,6 +208,86 @@ public class DataImportServiceImpl implements DataImportService { return null; } + public ReturnT manualImmigrationBatch(SalesforceParam param, List> futures) throws Exception { + List apis; + apis = DataUtil.toIdList(param.getApi()); + String join = StringUtils.join(apis, ","); + log.info("immigration apis: {}", join); + XxlJobLogger.log("immigration apis: {}", join); + + TimeUnit.MILLISECONDS.sleep(1); + + // 全量的时候 检测是否有自动任务锁住的表 + boolean isFull = CollectionUtils.isEmpty(param.getIds()); + if (isFull) { + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("data_lock", 1).in("name", apis); + List list = dataObjectService.list(qw); + if (CollectionUtils.isNotEmpty(list)) { + String apiNames = list.stream().map(DataObject::getName).collect(Collectors.joining()); + return new ReturnT<>(500, "api:" + apiNames + " is locked"); + } + } + + BulkConnection bulkConnection = salesforceTargetConnect.createBulkConnect(); + for (String api : apis) { + DataObject update = new DataObject(); + TimeUnit.MILLISECONDS.sleep(1); + try { + List salesforceParams = null; + + update.setName(api); + update.setDataLock(1); + dataObjectService.updateById(update); + + QueryWrapper dbQw = new QueryWrapper<>(); + dbQw.eq("name", api); + List list = dataBatchService.list(dbQw); + AtomicInteger batch = new AtomicInteger(1); + + if (CollectionUtils.isNotEmpty(list)) { + salesforceParams = list.stream().map(t -> { + SalesforceParam salesforceParam = param.clone(); + salesforceParam.setApi(t.getName()); + salesforceParam.setBeginCreateDate(t.getSyncStartDate()); + salesforceParam.setEndCreateDate(t.getSyncEndDate()); + salesforceParam.setBatch(batch.getAndIncrement()); + return salesforceParam; + }).collect(Collectors.toList()); + } + + // 手动任务优先执行 + for (SalesforceParam salesforceParam : salesforceParams) { + Future future = salesforceExecutor.execute(() -> { + try { + manualCreatedNewIdBatch(salesforceParam, bulkConnection); + } catch (Throwable throwable) { + log.error("salesforceExecutor error", throwable); + throw new RuntimeException(throwable); + } + }, salesforceParam.getBatch(), 1); + futures.add(future); + } + // 等待当前所有线程执行完成 + salesforceExecutor.waitForFutures(futures.toArray(new Future[]{})); + update.setDataWork(0); + } catch (InterruptedException e) { + throw e; + } catch (Throwable e) { + log.error("manualImmigration error", e); + throw new RuntimeException(e); + } finally { + if (isFull) { + update.setName(api); + update.setDataLock(0); + dataObjectService.updateById(update); + } + } + } + return null; + } + + @Override public void autoImmigration(SalesforceParam param, List> futures) throws Exception { QueryWrapper qw = new QueryWrapper<>(); @@ -420,6 +530,232 @@ public class DataImportServiceImpl implements DataImportService { dataBatchService.update(updateQw2); } + private void manualCreatedNewIdBatch(SalesforceParam param, BulkConnection bulkConnection) throws Exception { + String api = param.getApi(); + QueryWrapper dbQw = new QueryWrapper<>(); + dbQw.eq("api", api); + List list = dataFieldService.list(dbQw); + TimeUnit.MILLISECONDS.sleep(1); + + Date beginDate = param.getBeginCreateDate(); + Date endDate = param.getEndCreateDate(); + String beginDateStr = DateUtil.format(beginDate, "yyyy-MM-dd HH:mm:ss"); + String endDateStr = DateUtil.format(endDate, "yyyy-MM-dd HH:mm:ss"); + + //表内数据总量 + Integer count = customMapper.countBySQL(api, "where new_id is null and CreatedDate >= '" + beginDateStr + "' and CreatedDate < '" + endDateStr + "'"); + log.error("总Insert数据 count:{};-开始时间:{};-结束时间:{};-api:{};", count, beginDateStr, endDateStr, api); + if (count == 0) { + return; + } + + //批量插入2000一次 + int page = count%200 == 0 ? count/200 : (count/200) + 1; + for (int i = 0; i < page; i++) { + + List data = customMapper.listJsonObject("*", api, "new_id is null and CreatedDate >= '" + beginDateStr + "' and CreatedDate < '" + endDateStr + "' limit 200"); + int size = data.size(); + + log.info("执行api:{}, 执行page:{}, 执行size:{}", api, i+1, size); + List insertList = new ArrayList<>(); + + for (int j = 1; j <= size; j++) { + JSONObject account = new JSONObject(); + //找出sf对象必填字段,并且给默认值 + for (Map map : data) { + //给对象赋值 + for (DataField dataField : list) { + String field = dataField.getField(); + String reference_to = dataField.getReferenceTo(); + + if (!DataUtil.isUpdate(field) || (dataField.getIsCreateable() != null && !dataField.getIsCreateable())) { + continue; + } else if (StringUtils.isNotBlank(reference_to) && !"data_picklist".equals(reference_to)) { + if (!"null".equals(map.get(field)) && null != map.get(field) && !"OwnerId".equals(field) + || !"Owner_Type".equals(field)) { + //判断reference_to内是否包含User字符串 + if (reference_to.contains("User")) { + reference_to = "User"; + } + Map m = customMapper.getById("new_id", reference_to, String.valueOf(map.get(field))); + if (m != null && !m.isEmpty()) { + account.put(field, m.get("new_id")); + } + } + } else { + if (map.get(field) != null && StringUtils.isNotBlank(dataField.getSfType())) { + account.put(field, DataUtil.localDataToSfData(dataField.getSfType(), String.valueOf(map.get(field)))); + }else { + account.put(field, map.get(field)); + } + } + } + account.put("old_owner_id__c", map.get("OwnerId")); + account.put("old_sfdc_id__c", map.get("Id")); + } + + insertList.add(account); + if (i*200+j == count){ + break; + } + } + + try { + + //写入csv文件 + String fullPath = CsvConverterUtil.writeToCsv(insertList, UUID.randomUUID().toString()); + +// FileInputStream inputStream = new FileInputStream(fullPath); + + JobInfo salesforceInsertJob = createSalesforceJob(bulkConnection, api, OperationEnum.insert); + + List batchInfos = BulkUtil.createBatchesFromCSVFile(bulkConnection, salesforceInsertJob, fullPath); + + BulkUtil.closeJob(bulkConnection, salesforceInsertJob.getId()); + + BulkUtil.awaitCompletion(bulkConnection, salesforceInsertJob, batchInfos); + + checkResults(bulkConnection, salesforceInsertJob, batchInfos); + + +// BatchInfo insertBatch = bulkConnection.createJob(salesforceInsertJob,jsonString); + +// BatchInfo insertBatch = bulkConnection.createBatchFromStream(salesforceInsertJob,inputStream); +// +// closeJob(bulkConnection, insertBatch.getJobId()); + +// // 轮询直到批次完成 +// while (true) { +// BatchInfo batchInfo = bulkConnection.getBatchInfo(insertBatch.getJobId(), insertBatch.getId()); +// BatchStateEnum state = batchInfo.getState(); +// if (state == BatchStateEnum.Completed) { +// InputStream batchResultStream = bulkConnection.getBatchResultStream(insertBatch.getJobId(), insertBatch.getId()); +// List idColumns = CsvConverterUtil.extractIdColumn(batchResultStream); +// int index = 0; +// for (String id : idColumns) { +// List> maps = new ArrayList<>(); +// Map m = new HashMap<>(); +// m.put("key", "new_id"); +// m.put("value", id); +// maps.add(m); +// customMapper.updateById(api, maps, ids[index]); +// } +// break; +// } else if (state == BatchStateEnum.Failed) { +// throw new RuntimeException("Batch failed: " + batchInfo.getStateMessage()); +// } +// TimeUnit.SECONDS.sleep(10); //10秒检查一次 +// } +// +// String soql = "SELECT Id FROM "+ api +" WHERE CreatedDate >= '" + beginDate + "' AND CreatedDate <= '" + endDate + "'"; +// +// JobInfo salesforceQueryJob = createSalesforceJob(bulkConnection, api, OperationEnum.query); +// +// ByteArrayInputStream queryStream = new ByteArrayInputStream(soql.getBytes()); +// +// BatchInfo queryBatch = bulkConnection.createBatchFromStream(salesforceQueryJob, queryStream); +// +// while (true) { +// BatchInfo info = bulkConnection.getBatchInfo(queryBatch.getJobId(), queryBatch.getId()); +// if (info.getState() == BatchStateEnum.Completed) { +// InputStream batchResultStream = bulkConnection.getBatchResultStream(queryBatch.getJobId(), queryBatch.getId()); +// List idColumns = CsvConverterUtil.extractIdColumn(batchResultStream); +// Integer sfNum = idColumns.size(); +// +// UpdateWrapper updateQw = new UpdateWrapper<>(); +// updateQw.eq("name", api) +// .eq("sync_start_date", beginDate) +// .eq("sync_end_date", DateUtils.addSeconds(endDate, -1)) +// .set("target_sf_num", sfNum); +// dataBatchHistoryService.update(updateQw); +// +// UpdateWrapper updateQw2 = new UpdateWrapper<>(); +// updateQw2.eq("name", api) +// .eq("sync_start_date", beginDate) +// .eq("sync_end_date", endDate) +// .set("sf_add_num", sfNum); +// dataBatchService.update(updateQw2); +// +// break; +// }else if (info.getState() == BatchStateEnum.Failed) { +// throw new Exception("Query failed: " + info.getStateMessage()); +// } +// TimeUnit.SECONDS.sleep(10); //10秒检查一次 +// } + } catch (Exception e) { + log.error("manualCreatedNewId error api:{}", api, e); + throw e; + } + } + + } + + /** + * Gets the results of the operation and checks for errors. + */ + private void checkResults(BulkConnection connection, JobInfo job, + List batchInfoList) + throws AsyncApiException, IOException { + // batchInfoList was populated when batches were created and submitted + for (BatchInfo b : batchInfoList) { + CSVReader rdr = + new CSVReader(connection.getBatchResultStream(job.getId(), b.getId())); + List resultHeader = rdr.nextRecord(); + int resultCols = resultHeader.size(); + + List row; + while ((row = rdr.nextRecord()) != null) { + Map resultInfo = new HashMap(); + for (int i = 0; i < resultCols; i++) { + resultInfo.put(resultHeader.get(i), row.get(i)); + } + boolean success = Boolean.valueOf(resultInfo.get("Success")); + boolean created = Boolean.valueOf(resultInfo.get("Created")); + String id = resultInfo.get("Id"); + String error = resultInfo.get("Error"); + if (success && created) { + System.out.println("Created row with id " + id); + } else if (!success) { + System.out.println("Failed with error: " + error); + } + } + } + } + + /** + * 更新任务状态为完成 + * @param connection + * @param jobId + * @throws AsyncApiException + */ + private void closeJob(BulkConnection connection, String jobId) + throws AsyncApiException { + JobInfo job = new JobInfo(); + job.setId(jobId); + job.setState(JobStateEnum.Closed); + connection.updateJob(job); + } + + /** + * 创建任务 + * @param bulkConn + * @param objectName + * @param operation + * @return + * @throws AsyncApiException + */ + private static JobInfo createSalesforceJob(BulkConnection bulkConn, String objectName, OperationEnum operation) + throws AsyncApiException { + + JobInfo job = new JobInfo(); + job.setObject(objectName); + job.setOperation(operation); + job.setContentType(ContentType.CSV); // 使用 CSV 格式 + return bulkConn.createJob(job); + } + + + private void autoCreatedNewId(SalesforceParam param, PartnerConnection partnerConnection) throws Exception { String api = param.getApi(); QueryWrapper dbQw = new QueryWrapper<>(); diff --git a/src/main/java/com/celnet/datadump/service/impl/FileManagerServiceImpl.java b/src/main/java/com/celnet/datadump/service/impl/FileManagerServiceImpl.java index 8da5b0b..a0b44c9 100644 --- a/src/main/java/com/celnet/datadump/service/impl/FileManagerServiceImpl.java +++ b/src/main/java/com/celnet/datadump/service/impl/FileManagerServiceImpl.java @@ -211,7 +211,7 @@ public class FileManagerServiceImpl implements FileManagerService { maps.add(paramMap); } } catch (Exception e) { - e.printStackTrace(); + log.error("exception message", e); } Map paramMap = Maps.newHashMap(); paramMap.put("key", "is_dump"); @@ -326,7 +326,7 @@ public class FileManagerServiceImpl implements FileManagerService { try { response.close(); } catch (IOException e) { - e.printStackTrace(); + log.error("exception message", e); throw new RuntimeException("文件转换base64失败"); } } diff --git a/src/main/java/com/celnet/datadump/service/impl/FileServiceImpl.java b/src/main/java/com/celnet/datadump/service/impl/FileServiceImpl.java index 237ac2d..c1ab3ec 100644 --- a/src/main/java/com/celnet/datadump/service/impl/FileServiceImpl.java +++ b/src/main/java/com/celnet/datadump/service/impl/FileServiceImpl.java @@ -552,7 +552,7 @@ public class FileServiceImpl implements FileService { try { response.close(); } catch (IOException e) { - e.printStackTrace(); + log.error("exception message", e); } } try { @@ -704,7 +704,7 @@ public class FileServiceImpl implements FileService { try { response.close(); } catch (IOException e) { - e.printStackTrace(); + log.error("exception message", e); } } try { diff --git a/src/main/java/com/celnet/datadump/util/BulkUtil.java b/src/main/java/com/celnet/datadump/util/BulkUtil.java new file mode 100644 index 0000000..cf56f35 --- /dev/null +++ b/src/main/java/com/celnet/datadump/util/BulkUtil.java @@ -0,0 +1,209 @@ +package com.celnet.datadump.util; + +import com.sforce.async.*; +import com.sforce.soap.partner.PartnerConnection; +import com.sforce.ws.ConnectionException; +import com.sforce.ws.ConnectorConfig; + +import java.io.*; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +public class BulkUtil { + + public static void closeJob(BulkConnection connection, String jobId) + throws AsyncApiException { + JobInfo job = new JobInfo(); + job.setId(jobId); + job.setState(JobStateEnum.Closed); + connection.updateJob(job); + } + + + /** + * Wait for a job to complete by polling the Bulk API. + * + * @param connection + * BulkConnection used to check results. + * @param job + * The job awaiting completion. + * @param batchInfoList + * List of batches for this job. + * @throws AsyncApiException + */ + public static void awaitCompletion(BulkConnection connection, JobInfo job, + List batchInfoList) + throws AsyncApiException { + long sleepTime = 0L; + Set incomplete = new HashSet(); + for (BatchInfo bi : batchInfoList) { + incomplete.add(bi.getId()); + } + while (!incomplete.isEmpty()) { + try { + Thread.sleep(sleepTime); + } catch (InterruptedException e) {} + System.out.println("Awaiting results..." + incomplete.size()); + sleepTime = 10000L; + BatchInfo[] statusList = + connection.getBatchInfoList(job.getId()).getBatchInfo(); + for (BatchInfo b : statusList) { + if (b.getState() == BatchStateEnum.Completed + || b.getState() == BatchStateEnum.Failed) { + if (incomplete.remove(b.getId())) { + System.out.println("BATCH STATUS:\n" + b); + } + } + } + } + } + + /** + * Create a new job using the Bulk API. + * + * @param sobjectType + * The object type being loaded, such as "Account" + * @param connection + * BulkConnection used to create the new job. + * @return The JobInfo for the new job. + * @throws AsyncApiException + */ + public static JobInfo createJob(String sobjectType, BulkConnection connection) + throws AsyncApiException { + JobInfo job = new JobInfo(); + job.setObject(sobjectType); + job.setOperation(OperationEnum.insert); + job.setContentType(ContentType.CSV); + job = connection.createJob(job); + System.out.println(job); + return job; + } + + /** + * Create the BulkConnection used to call Bulk API operations. + */ + public static BulkConnection getBulkConnection(String userName, String password,String url) + throws ConnectionException, AsyncApiException { + ConnectorConfig partnerConfig = new ConnectorConfig(); + partnerConfig.setUsername(userName); + partnerConfig.setPassword(password); + partnerConfig.setAuthEndpoint(url); + // Creating the connection automatically handles login and stores + // the session in partnerConfig + new PartnerConnection(partnerConfig); + // When PartnerConnection is instantiated, a login is implicitly + // executed and, if successful, + // a valid session is stored in the ConnectorConfig instance. + // Use this key to initialize a BulkConnection: + ConnectorConfig config = new ConnectorConfig(); + config.setSessionId(partnerConfig.getSessionId()); + // The endpoint for the Bulk API service is the same as for the normal + // SOAP uri until the /Soap/ part. From here it's '/async/versionNumber' + String soapEndpoint = partnerConfig.getServiceEndpoint(); + String apiVersion = "56.0"; + String restEndpoint = soapEndpoint.substring(0, soapEndpoint.indexOf("Soap/")) + + "async/" + apiVersion; + config.setRestEndpoint(restEndpoint); + // This should only be false when doing debugging. + config.setCompression(true); + // Set this to true to see HTTP requests and responses on stdout + config.setTraceMessage(false); + BulkConnection connection = new BulkConnection(config); + return connection; + } + + /** + * Create and upload batches using a CSV file. + * The file into the appropriate size batch files. + * + * @param connection + * Connection to use for creating batches + * @param jobInfo + * Job associated with new batches + * @param csvFileName + * The source file for batch data + */ + public static List createBatchesFromCSVFile(BulkConnection connection, + JobInfo jobInfo, String csvFileName) + throws IOException, AsyncApiException { + List batchInfos = new ArrayList(); + BufferedReader rdr = new BufferedReader( + new InputStreamReader(new FileInputStream(csvFileName)) + ); + // read the CSV header row + byte[] headerBytes = (rdr.readLine() + "\n").getBytes("UTF-8"); + int headerBytesLength = headerBytes.length; + File tmpFile = File.createTempFile("bulkAPIInsert", ".csv"); + + // Split the CSV file into multiple batches + try { + FileOutputStream tmpOut = new FileOutputStream(tmpFile); + int maxBytesPerBatch = 10000000; // 10 million bytes per batch + int maxRowsPerBatch = 10000; // 10 thousand rows per batch + int currentBytes = 0; + int currentLines = 0; + String nextLine; + while ((nextLine = rdr.readLine()) != null) { + byte[] bytes = (nextLine + "\n").getBytes("UTF-8"); + // Create a new batch when our batch size limit is reached + if (currentBytes + bytes.length > maxBytesPerBatch + || currentLines > maxRowsPerBatch) { + createBatch(tmpOut, tmpFile, batchInfos, connection, jobInfo); + currentBytes = 0; + currentLines = 0; + } + if (currentBytes == 0) { + tmpOut = new FileOutputStream(tmpFile); + tmpOut.write(headerBytes); + currentBytes = headerBytesLength; + currentLines = 1; + } + tmpOut.write(bytes); + currentBytes += bytes.length; + currentLines++; + } + // Finished processing all rows + // Create a final batch for any remaining data + if (currentLines > 1) { + createBatch(tmpOut, tmpFile, batchInfos, connection, jobInfo); + } + } finally { + tmpFile.delete(); + } + return batchInfos; + } + + /** + * Create a batch by uploading the contents of the file. + * This closes the output stream. + * + * @param tmpOut + * The output stream used to write the CSV data for a single batch. + * @param tmpFile + * The file associated with the above stream. + * @param batchInfos + * The batch info for the newly created batch is added to this list. + * @param connection + * The BulkConnection used to create the new batch. + * @param jobInfo + * The JobInfo associated with the new batch. + */ + public static void createBatch(FileOutputStream tmpOut, File tmpFile, + List batchInfos, BulkConnection connection, JobInfo jobInfo) + throws IOException, AsyncApiException { + tmpOut.flush(); + tmpOut.close(); + FileInputStream tmpInputStream = new FileInputStream(tmpFile); + try { + BatchInfo batchInfo = + connection.createBatchFromStream(jobInfo, tmpInputStream); + System.out.println(batchInfo); + batchInfos.add(batchInfo); + + } finally { + tmpInputStream.close(); + } + } +} diff --git a/src/main/java/com/celnet/datadump/util/CsvConverterUtil.java b/src/main/java/com/celnet/datadump/util/CsvConverterUtil.java new file mode 100644 index 0000000..de85b86 --- /dev/null +++ b/src/main/java/com/celnet/datadump/util/CsvConverterUtil.java @@ -0,0 +1,330 @@ +package com.celnet.datadump.util; + +import cn.hutool.core.io.FileUtil; +import cn.hutool.core.io.IoUtil; + +import cn.hutool.core.text.csv.CsvUtil; +import cn.hutool.core.text.csv.CsvWriteConfig; +import cn.hutool.core.text.csv.CsvWriter; +import cn.hutool.core.util.CharsetUtil; +import cn.hutool.json.JSONObject; +import com.opencsv.CSVReader; +import com.opencsv.exceptions.CsvException; +import org.apache.commons.csv.CSVFormat; +import org.apache.commons.csv.CSVPrinter; + +import java.io.*; +import java.nio.charset.StandardCharsets; +import java.util.*; + +/** + * csv格式转换工具类 + */ +public class CsvConverterUtil { + + /** + * 将JSONObject(代表一行)或JSONArray(代表多行)写入CSV文件 + * @param jsonList JSON数据 + */ + public static String writeToCsv(List jsonList, String fileName) { + + // 1. 创建目标目录(不存在则创建) + File targetDir = FileUtil.mkdir("data-dump/dataFile"); + + // 2. 构建完整文件路径 + String fullPath = targetDir.getAbsolutePath() + File.separator + fileName + ".csv"; + + CsvWriter csvWriter = CsvUtil.getWriter(fullPath, CharsetUtil.CHARSET_GBK, false); + + String[] header = jsonList.get(0).keySet().toArray(new String[0]); + + // 2. 写入表头(必须使用 String[]) + csvWriter.writeHeaderLine(header); + + // 遍历数据列表 + for (JSONObject jsonObject : jsonList) { + // 按表头顺序获取值 + String[] row = new String[header.length]; + for (int i = 0; i < header.length; i++) { + // 将每个值转换为字符串(如果为null则转为空字符串) + Object value = jsonObject.get(header[i]); + row[i] = value == null ? "" : value.toString(); + } + csvWriter.writeLine(row); + } + + // 关闭writer(在try-with-resources中可省略,但这里我们显式关闭) + csvWriter.close(); + + return fullPath; + } + + + public static String exportToCsv(List> data, String fileName) throws IOException { + // 1. 创建目标目录(不存在则创建) + File targetDir = FileUtil.mkdir("data-dump/dataFile"); + + // 2. 构建完整文件路径 + String fullPath = targetDir.getAbsolutePath() + File.separator + fileName + ".csv"; + + CsvWriter csvWriter = CsvUtil.getWriter(fullPath, CharsetUtil.CHARSET_UTF_8, false); + + // 1. 提取表头(保持顺序) + Set headers = new LinkedHashSet<>(); + for (Map map : data) { + headers.addAll(map.keySet()); + } + String[] headerArray = headers.toArray(new String[0]); + + // 2. 写入表头(必须使用 String[]) + csvWriter.writeLine(headerArray); + + // 3. 写入数据行(需要将 Object 转换为 String) + for (Map map : data) { + // 按表头顺序构建行数据 + String[] row = new String[headerArray.length]; + for (int i = 0; i < headerArray.length; i++) { + Object value = map.get(headerArray[i]); + // 处理空值和特殊字符 + row[i] = convertToCsvValue(value); + } + csvWriter.writeLine(row); // 使用 String[] 参数 + } + + return fullPath; + } + + + + /** + * @Description: convert list> to csv + * @Param: list>,pathName + * @return: + */ + public static String saveOpenToDataDump(List> list,String fileName) throws IOException { + + // 1. 创建目标目录(不存在则创建) + File targetDir = FileUtil.mkdir("data-dump/dataFile"); + + // 2. 构建完整文件路径 + String fullPath = targetDir.getAbsolutePath() + File.separator + fileName + ".csv"; + + List headerList = new ArrayList<>(); + for (String s : list.get(0).keySet()) { + headerList.add(s); + } + String[] csvHeader = headerList.toArray(new String[headerList.size()]); + + FileWriter out = new FileWriter(fullPath); + + try (CSVPrinter printer = new CSVPrinter(out, CSVFormat.DEFAULT + .withHeader(csvHeader))) { + for(Map map:list) { + List valueList = new ArrayList<>(); + for(String s:headerList) + valueList.add(String.valueOf(map.get(s))); + String[] csvValue = valueList.toArray(new String[valueList.size()]); + printer.printRecord(csvValue); + } + } + + out.close(); + + return fullPath; + } + + + + /** + * 保存 CSV 文件到 data-dump/dataFile 目录 + * @param data 数据集合 + * @param fileName 文件名(无需后缀,自动添加.csv) + * @return 完整的文件路径 + */ + public static String saveToDataDump(List> data, String fileName) { + // 1. 创建目标目录(不存在则创建) + File targetDir = FileUtil.mkdir("data-dump/dataFile"); + + // 2. 构建完整文件路径 + String fullPath = targetDir.getAbsolutePath() + File.separator + fileName + ".csv"; + + // 3. 写入CSV文件 + try (CsvWriter csvWriter = new CsvWriter( + new File(fullPath), + CharsetUtil.CHARSET_UTF_8, // UTF-8编码 + false, // 非追加模式 + new CsvWriteConfig().setFieldSeparator(',') // 逗号分隔符 + )) { + // 1. 提取表头(保持顺序) + Set headers = new LinkedHashSet<>(); + for (Map map : data) { + headers.addAll(map.keySet()); + } + String[] headerArray = headers.toArray(new String[0]); + + // 2. 写入表头(必须使用 String[]) + csvWriter.writeLine(headerArray); + + // 3. 写入数据行(需要将 Object 转换为 String) + for (Map map : data) { + // 按表头顺序构建行数据 + String[] row = new String[headerArray.length]; + for (int i = 0; i < headerArray.length; i++) { + Object value = map.get(headerArray[i]); + // 处理空值和特殊字符 + row[i] = convertToCsvValue(value); + } + csvWriter.writeLine(row); // 使用 String[] 参数 + } + // 4. 释放资源并返回结果 + IoUtil.close(csvWriter); + } + return fullPath; + } + + public static InputStream convertListToCsv(List> data) { + if (data == null || data.isEmpty()) { + return null; + } + + // 使用 StringWriter 作为缓冲区 + StringWriter stringWriter = new StringWriter(); + CsvWriter csvWriter = CsvUtil.getWriter(stringWriter, CsvWriteConfig.defaultConfig()); + + // 1. 提取表头(保持顺序) + Set headers = new LinkedHashSet<>(); + for (Map map : data) { + headers.addAll(map.keySet()); + } + String[] headerArray = headers.toArray(new String[0]); + + // 2. 写入表头(必须使用 String[]) + csvWriter.writeLine(headerArray); + + // 3. 写入数据行(需要将 Object 转换为 String) + for (Map map : data) { + // 按表头顺序构建行数据 + String[] row = new String[headerArray.length]; + for (int i = 0; i < headerArray.length; i++) { + Object value = map.get(headerArray[i]); + // 处理空值和特殊字符 + row[i] = convertToCsvValue(value); + } + csvWriter.writeLine(row); // 使用 String[] 参数 + } + + // 4. 释放资源并返回结果 + IoUtil.close(csvWriter); + return new ByteArrayInputStream(csvWriter.toString().getBytes(StandardCharsets.UTF_8)); + } + + // 处理特殊值和空值 + private static String convertToCsvValue(Object value) { + if (value == null) { + return ""; + } + // Hutool 会自动处理逗号、引号等特殊字符 + return value.toString(); + } + + public static List extractIdColumn(InputStream inputStream) throws IOException, CsvException { + + List idList = new ArrayList<>(); + + try (CSVReader reader = new CSVReader(new InputStreamReader(inputStream))) { + // 读取CSV表头 + String[] headers = reader.readNext(); + int idIndex = -1; + + // 查找id列的索引位置 + for (int i = 0; i < headers.length; i++) { + if ("id".equalsIgnoreCase(headers[i].trim())) { + idIndex = i; + break; + } + } + + if (idIndex == -1) { + throw new IllegalArgumentException("CSV文件中未找到id列"); + } + + // 逐行读取数据 + String[] nextRecord; + while ((nextRecord = reader.readNext()) != null) { + if (idIndex < nextRecord.length) { + if (!"Id".equals(nextRecord[idIndex])){ + idList.add(nextRecord[idIndex]); + } + } + } + } + return idList; + } + + public static InputStream convertToCsvStream(List> data) throws IOException { + if (data == null || data.isEmpty()) { + return new ByteArrayInputStream(new byte[0]); + } + + // 获取所有列头(保持顺序) + Set headers = new LinkedHashSet<>(); + for (Map map : data) { + headers.addAll(map.keySet()); + } + List headerList = new ArrayList<>(headers); + + try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + Writer writer = new OutputStreamWriter(outputStream, StandardCharsets.UTF_8)) { + + // 写入CSV头 + writeCsvLine(writer, headerList); + + // 写入数据行 + for (Map row : data) { + List values = new ArrayList<>(); + for (String header : headerList) { + Object value = row.get(header); + values.add(value != null ? escapeCsv(value.toString()) : ""); + } + writeCsvLine(writer, values); + } + + writer.flush(); + return new ByteArrayInputStream(outputStream.toByteArray()); + } + } + + private static void writeCsvLine(Writer writer, List values) throws IOException { + if (values.isEmpty()) { + writer.write("\n"); + return; + } + + for (int i = 0; i < values.size(); i++) { + writer.write(values.get(i)); + if (i < values.size() - 1) { + writer.write(','); + } + } + writer.write('\n'); + } + + private static String escapeCsv(String value) { + if (value == null) { + return ""; + } + + // 检查是否需要转义(包含特殊字符) + boolean needsEscape = value.contains(",") + || value.contains("\"") + || value.contains("\n") + || value.contains("\r"); + + if (!needsEscape) { + return value; + } + + // 转义双引号并包裹整个字段 + return "\"" + value.replace("\"", "\"\"") + "\""; + } +} diff --git a/src/main/java/com/celnet/datadump/util/DataUtil.java b/src/main/java/com/celnet/datadump/util/DataUtil.java index 9160d42..f679e13 100644 --- a/src/main/java/com/celnet/datadump/util/DataUtil.java +++ b/src/main/java/com/celnet/datadump/util/DataUtil.java @@ -14,6 +14,7 @@ import com.sforce.soap.partner.Field; import com.sforce.soap.partner.sobject.SObject; import com.sforce.ws.bind.XmlObject; import com.sforce.ws.types.Time; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.map.CaseInsensitiveMap; import org.apache.commons.lang3.BooleanUtils; @@ -37,6 +38,7 @@ import java.util.*; * @description 数据处理工具 * @date 2022/11/16 */ +@Slf4j @Component public class DataUtil { @@ -407,7 +409,7 @@ public class DataUtil { try { return sdf.parse(data+"T08:00:00Z"); } catch (ParseException e) { - e.printStackTrace(); + log.error("exception message", e); } case "datetime": try { diff --git a/src/main/java/com/celnet/datadump/util/MD5Util.java b/src/main/java/com/celnet/datadump/util/MD5Util.java index b04be34..f985acb 100644 --- a/src/main/java/com/celnet/datadump/util/MD5Util.java +++ b/src/main/java/com/celnet/datadump/util/MD5Util.java @@ -1,5 +1,7 @@ package com.celnet.datadump.util; +import lombok.extern.slf4j.Slf4j; + import javax.crypto.Cipher; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; @@ -10,6 +12,7 @@ import java.security.NoSuchAlgorithmException; import java.security.spec.AlgorithmParameterSpec; import java.util.Base64; +@Slf4j public class MD5Util { /** 向量(同时拥有向量和密匙才能解密),此向量必须是8byte,多少都报错 */ @@ -58,7 +61,7 @@ public class MD5Util { System.out.println("解密后的字符:" + mt.decode(mt.encode(value))); System.out.println("字符串的MD5值:"+ getMD5Value(value)); } catch (Exception e) { - e.printStackTrace(); + log.error("exception message", e); } } diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index 56d4b56..b5ec1f4 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -4,7 +4,9 @@ spring: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/cook?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true username: root - password: celnet@2025.bln +# password: celnet@2025.bln + password: root + mail: host: smtp.mxhichina.com port: 465 diff --git a/src/main/resources/mapper/CustomMapper.xml b/src/main/resources/mapper/CustomMapper.xml index afc2850..9190f1a 100644 --- a/src/main/resources/mapper/CustomMapper.xml +++ b/src/main/resources/mapper/CustomMapper.xml @@ -135,6 +135,18 @@ + +