You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@dubbo.apache.org by "chenglutao (via GitHub)" <gi...@apache.org> on 2023/03/05 09:08:21 UTC

[GitHub] [dubbo] chenglutao commented on issue #11726: java.lang.RuntimeException: publish nacos metadata failed

chenglutao commented on issue #11726:
URL: https://github.com/apache/dubbo/issues/11726#issuecomment-1455032510

   his_config_info中gmt_create为非空字段,在mysql中默认值是当前时间戳CURRENT_TIMESTAMP
   postgresql-----his_config_info 字段 gmt_create 也要设置为默认值当前时间戳CURRENT_TIMESTAMP
   
   nacos源码
   com.alibaba.nacos.config.server.service.repository.extrnal.ExternalHistoryConfigInfoPersistServiceImpl
   
   @Override
   public void insertConfigHistoryAtomic(long id, ConfigInfo configInfo, String srcIp, String srcUser,
           final Timestamp time, String ops) {
       String appNameTmp = StringUtils.isBlank(configInfo.getAppName()) ? StringUtils.EMPTY : configInfo.getAppName();
       String tenantTmp = StringUtils.isBlank(configInfo.getTenant()) ? StringUtils.EMPTY : configInfo.getTenant();
       final String md5Tmp = MD5Utils.md5Hex(configInfo.getContent(), Constants.ENCODE);
       String encryptedDataKey = StringUtils.isBlank(configInfo.getEncryptedDataKey()) ? StringUtils.EMPTY
               : configInfo.getEncryptedDataKey();
       try {
           HistoryConfigInfoMapper historyConfigInfoMapper = mapperManager.findMapper(
                   dataSourceService.getDataSourceType(), TableConstant.HIS_CONFIG_INFO);
           jt.update(historyConfigInfoMapper.insert(
                           Arrays.asList("id", "data_id", "group_id", "tenant_id", "app_name", "content", "md5", "src_ip",
                                   "src_user", "gmt_modified", "op_type", "encrypted_data_key")), id, configInfo.getDataId(),
                   configInfo.getGroup(), tenantTmp, appNameTmp, configInfo.getContent(), md5Tmp, srcIp, srcUser, time,
                   ops, encryptedDataKey);
       } catch (DataAccessException e) {
           LogUtil.FATAL_LOG.error("[db-error] " + e, e);
           throw e;
       }
   }
   
   
   config-fatal.log 异常日志
   org.springframework.dao.DataIntegrityViolationException: PreparedStatementCallback; SQL [INSERT INTO his_config_info(id, data_id, group_id, tenant_id, app_name, content, md5, src_ip, src_user, gmt_modified, op_type, encrypted_data_key) VALUES(?,?,?,?,?,?,?,?,?,?,?,?)]; 错误: 在字段 "gmt_create" 中空值违反了非空约束
   详细:失败, 行包含(0, 4591, com.xxx.modules.service.DemoService, mapping, , rpc, da0fb2ac892daab4810fb781272173c1, null, 2023-03-05 15:50:27.42, null, 172.0.4.184, I , , ).; nested exception is org.postgresql.util.PSQLException: 错误: 在字段 "gmt_create" 中空值违反了非空约束
   详细:失败, 行包含(0, 4591, com.xxx.modules.service.DemoService, mapping, , rpc, da0fb2ac892daab4810fb781272173c1, null, 2023-03-05 15:50:27.42, null, 172.0.4.184, I , , ).
   at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:251)
   at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:70)
   at org.springframework.jdbc.core.JdbcTemplate.translateException(JdbcTemplate.java:1541)
   at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:667)
   at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:960)
   at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:1015)
   at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:1025)
   at com.alibaba.nacos.config.server.service.repository.extrnal.ExternalHistoryConfigInfoPersistServiceImpl.insertConfigHistoryAtomic(ExternalHistoryConfigInfoPersistServiceImpl.java:111)
   at com.alibaba.nacos.config.server.service.repository.extrnal.ExternalConfigInfoPersistServiceImpl.lambda$addConfigInfo$0(ExternalConfigInfoPersistServiceImpl.java:156)
   at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140)
   at com.alibaba.nacos.config.server.service.repository.extrnal.ExternalConfigInfoPersistServiceImpl.addConfigInfo(ExternalConfigInfoPersistServiceImpl.java:149)
   at com.alibaba.nacos.config.server.service.repository.extrnal.ExternalConfigInfoPersistServiceImpl.insertOrUpdateCas(ExternalConfigInfoPersistServiceImpl.java:191)
   at com.alibaba.nacos.config.server.remote.ConfigPublishRequestHandler.handle(ConfigPublishRequestHandler.java:119)
   at com.alibaba.nacos.config.server.remote.ConfigPublishRequestHandler.handle(ConfigPublishRequestHandler.java:55)
   at com.alibaba.nacos.core.remote.RequestHandler.handleRequest(RequestHandler.java:58)
   at com.alibaba.nacos.core.remote.RequestHandler$$FastClassBySpringCGLIB$$6a0564cd.invoke()
   at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
   at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:793)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
   at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
   at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:89)
   at com.alibaba.nacos.config.server.aspect.RequestLogAspect.logClientRequestRpc(RequestLogAspect.java:215)
   at com.alibaba.nacos.config.server.aspect.RequestLogAspect.interfacePublishSingleRpc(RequestLogAspect.java:116)


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@dubbo.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@dubbo.apache.org
For additional commands, e-mail: notifications-help@dubbo.apache.org