在進行專案的完善和修改過程中,難免出一些爛記性導致的bug。
25/10錯誤日誌
ERROR o.a.c.c.C.[.[localhost].[/].[dispatcherServlet]:181 - Servlet.service() for servlet [dispatcherServlet] in context with
path [] threw exception [Request processing failed; nested exception is
org.springframework.data.redis.serializer.SerializationException: Cannot deserialize; nested exception is
org.springframework.core.serializer.support.SerializationFailedException: Failed to deserialize payload. Is the byte array a
result of corresponding serialization for DefaultDeserializer?; nested exception is java.io.InvalidClassException:
com.xxx.Competition; local class incompatible: stream classdesc serialVersionUID = 6538832880805972610,
local class serialVersionUID = -3999125971536227608] with root cause
複製程式碼
剛開始沒看到redis
字眼,只看到了Competition
這個類反序列化失敗...導致繞了很大的圈子,幹了很多無謂的掙扎。
一瞬間的發現
再狂改了一頓程式碼後發現了是
redis
相關的報錯,MD啊,以後一定要耐心認真讀完每一行報錯。
好了,檢查Competition
類的程式碼,真的什麼都忘了,好幾周前改的程式碼,一點都想不起來哪裡會出錯,然後我去看git
日誌。發現我在之前給該類增加過欄位,然後redis
的資料也忘記做清除,導致redis
中的資料結構還是舊的,返回的序列號也是之前的,所以spring
在拿到該資料後不能正確的給予反序列化,導致該報錯。
問題解決
找到問題原因,解決就很簡單了,直接將相關的
redis
做清除。
redis-cli keys "cpt_*" | xargs redis-cli del
複製程式碼
好了,訪問正常。
好的習慣很重要,一個功能開發不完就先別睡覺、吃飯等...。不然可能會付出雙倍的時間去填坑。
關注公眾號,回覆
java架構
獲取架構視訊資源。