使用redis做一次投票活动中tomcat 启动一段时间后死机redis.clients.jedis.exceptions.JedisDataException: value sent to redi
来源:互联网 发布:剑雨江湖进阶数据2017 编辑:程序博客网 时间:2024/06/05 15:08
一个微信投票活动中项目扔tomcat中跑起来 ,后来投票后不间断老司机,当时十分费解 ,小项目没用日志略坑,只能查看tomcat日志,于是看到日志记录报错如下
Jun 17, 2017 7:52:53 AM org.apache.catalina.core.StandardWrapperValve invokeSEVERE: Servlet.service() for servlet [SpringMVC] in context with path [/lx] threw exception [Request processing failed; nested exception is redis.clients.jedis.exceptions.JedisDataException: value sent to redis cannot be null] with root causeredis.clients.jedis.exceptions.JedisDataException: value sent to redis cannot be nullat redis.clients.util.SafeEncoder.encode(SafeEncoder.java:28)at redis.clients.jedis.Client.hmget(Client.java:179)at redis.clients.jedis.Jedis.hmget(Jedis.java:670)at com.sunadver.lxgj.controller.StudentController.clickVote(StudentController.java:112)at sun.reflect.GeneratedMethodAccessor63.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:606)at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215)at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:749)at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:690)at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:945)at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:876)at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863)at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)at java.lang.Thread.run(Thread.java:744)
思考了一下,原来是有人使用了刷票工具导致的,因为正常使用微信投票会获得一个openId,然而这个没有获取到,所以redis在查询key时候如果没有虽然是null,但是我又直接获取map的value,所以就坑了,下面是我写的,因为有人用刷票工具所以我获取不到openid ,然后再获取list元素的值就报错了,还坑的是我没有在结尾加finally{}归还jedis,在判断里加的jedis.close();所以异常发生后直接就断在那了,最后链接池资源被耗光,然后tomcat自然over了
if ((jedis.hmget(openId, "date").get(0)) == null) {
然后加了个判断openid存在的判断,最后乖乖在最后用finally关闭的jedis,在扔进去一天也没断,看日志完全没毛病
阅读全文
0 0
- 使用redis做一次投票活动中tomcat 启动一段时间后死机redis.clients.jedis.exceptions.JedisDataException: value sent to redi
- Caused by: redis.clients.jedis.exceptions.JedisDataException: ERR Client sent AUTH, but no password
- redis.clients.jedis.exceptions.JedisDataException: ERR Client sent AUTH, but no password is set
- redis.clients.jedis.exceptions.JedisDataException: ERR Client sent AUTH, but no password is set
- Caused by: redis.clients.jedis.exceptions.JedisDataException: ERR Client sent AUTH, but no password
- redis存储tomcat共享session异常:redis.clients.jedis.exceptions.JedisDataException: NOAUTH Authentication
- redis.clients.jedis.exceptions.JedisDataException: NOAUTH Authentication required.
- redis.clients.jedis.exceptions.JedisDataException: MOVED 13102 127.0.0.1
- redis.clients.jedis.exceptions.JedisDataException: ERR unknown command 'SENTINEL'
- java.lang.NoClassDefFoundError: redis/clients/jedis/exceptions/JedisDataException
- 客户端连接redis出现:redis.clients.jedis.exceptions.JedisDataException: DENIED Redis is running
- Redis redis.clients.jedis.exceptions.JedisDataException: ERR Operation against a key holding the wr
- Caused by: redis.clients.jedis.exceptions.JedisDataException: DENIED Redis is running in protected m
- redis.clients.jedis.exceptions.JedisConnectionException
- redis3.0 redis.clients.jedis.exceptions.JedisDataException: WRONGTYPE Operation against a key holdin
- redis.clients.jedis.exceptions.JedisDataException: ERR Operation against a key holding the wrong kin
- 错误:redis.clients.jedis.exceptions.JedisDataException: ERR This instance has cluster support disabled
- redis.clients.jedis.exceptions.JedisDataException: ERR Protocol error: invalid bulk length
- PHP 中对MySql 数据库的增删改查
- 第二行代码第九章笔记
- Hibernate MySql 连接池隔天断开
- Android ADB和shell常用命令
- FFmpeg基本用法
- 使用redis做一次投票活动中tomcat 启动一段时间后死机redis.clients.jedis.exceptions.JedisDataException: value sent to redi
- Mac 环境下svn的安装和使用
- 图像分割评价标准VO&DC的计算方法
- hylan:Oracle 修改默认实例(ORACLE_SID)
- centos镜像下载
- animate.css + jquery-aniview
- Redis GEO地理位置命令
- Linux统计某文件夹下文件、文件夹的个数
- SpringMVC 4.1 新特性(一)JSONP的支持