起因
近期工作重新规划了项目的包结构,调整完成后启动项目(springBoot + elasticJob)出现启动异常。
org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'org.apache.shardingsphere.elasticjob.lite.spring.boot.job.ElasticJobBootstrapConfiguration':
Invocation of init method failed;
nested exception is org.apache.shardingsphere.elasticjob.infra.exception.JobConfigurationException:
Job conflict with register center. The job 'retryJob' in register center's class is 'xxxxxx.RetryJob', your job class is 'xxxxxx.new.RetryJob'
异常原因是调整包结构后同一job的elasticJobClass属性和已经在zk注册的job不一致。解决办法:1、修改配置文件的job名称作为一个新的job出现(或者修改namespace);2、删除zk上已注册的job。基于不遗留干扰项的原则,我选择了后者。重点来了,登录运维平台后出现400的访问异常。
解决
登录部署运维平台的服务器,查看服务端日志,有异常Request header is too large
[INFO ] 10:53:26.542 [http-nio-8080-exec-3] o.a.coyote.http11.Http11Processor - Error parsing HTTP request header
Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.
java.lang.IllegalArgumentException: Request header is too large
at org.apache.coyote.http11.Http11InputBuffer.fill(Http11InputBuffer.java:726)
at org.apache.coyote.http11.Http11InputBuffer.parseHeader(Http11InputBuffer.java:873)
通过浏览器开发者工具查看请求header,access-token的长度确实很长
粗略看这个值还以为是elasticJob运维平台的bug,感觉access-token被拉长。尝试换一个新的浏览器,能够正常访问,但是两个浏览器请求的access-token长度相同,那就是其他header属性导致的超长。对比发现cookies的值也很多,能是这个导致的超长。
根据这个推断使用隐身浏览器能够正常访问运维平台。
结论
运维平台和公司的其他站点部署在相同一级域名的不同二级域名下面,其他站点会写一级域名的cookies。chrome作为常用浏览器,随登录的站点增多,一级域名下缓存的cookies越来越多,导致request header超长的问题。
欢迎大家留言交流讨论,如果对你有帮助,请点个赞吧