Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix crash when we don't have new_state or old_state in websocket. #2004

Merged
merged 1 commit into from Dec 11, 2021

Conversation

JBassett
Copy link
Collaborator

Summary

Fixes this:

2021-12-09 20:06:16.564 12564-19701/? E/AndroidRuntime: FATAL EXCEPTION: DefaultDispatcher-worker-6
    Process: io.homeassistant.companion.android, PID: 12564
    java.lang.IllegalArgumentException: Instantiation of [simple type, class io.homeassistant.companion.android.common.data.websocket.impl.entities.StateChangedEvent] value failed for JSON property old_state due to missing (therefore NULL) value for creator parameter oldState which is a non-nullable type
        at [Source: UNKNOWN; byte offset: #UNKNOWN] (through reference chain: io.homeassistant.companion.android.common.data.websocket.impl.entities.EventResponse["data"]->io.homeassistant.companion.android.common.data.websocket.impl.entities.StateChangedEvent["old_state"])
        at com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:4394)
        at com.fasterxml.jackson.databind.ObjectMapper.convertValue(ObjectMapper.java:4335)
        at io.homeassistant.companion.android.common.data.websocket.impl.WebSocketRepositoryImpl.handleEvent(WebSocketRepositoryImpl.kt:241)
        at io.homeassistant.companion.android.common.data.websocket.impl.WebSocketRepositoryImpl.access$handleEvent(WebSocketRepositoryImpl.kt:47)
        at io.homeassistant.companion.android.common.data.websocket.impl.WebSocketRepositoryImpl$onMessage$1.invokeSuspend(WebSocketRepositoryImpl.kt:286)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
     Caused by: com.fasterxml.jackson.module.kotlin.MissingKotlinParameterException: Instantiation of [simple type, class io.homeassistant.companion.android.common.data.websocket.impl.entities.StateChangedEvent] value failed for JSON property old_state due to missing (therefore NULL) value for creator parameter oldState which is a non-nullable type
        at [Source: UNKNOWN; byte offset: #UNKNOWN] (through reference chain: io.homeassistant.companion.android.common.data.websocket.impl.entities.EventResponse["data"]->io.homeassistant.companion.android.common.data.websocket.impl.entities.StateChangedEvent["old_state"])
        at com.fasterxml.jackson.module.kotlin.KotlinValueInstantiator.createFromObjectWith(KotlinValueInstantiator.kt:116)
        at com.fasterxml.jackson.databind.deser.impl.PropertyBasedCreator.build(PropertyBasedCreator.java:202)
        at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:443)
        at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1405)
        at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:351)
        at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:184)
        at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:542)
        at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeWithErrorWrapping(BeanDeserializer.java:563)
        at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:438)
        at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1405)
        at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:351)
        at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:184)
        at com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:4389)
        at com.fasterxml.jackson.databind.ObjectMapper.convertValue(ObjectMapper.java:4335) 
        at io.homeassistant.companion.android.common.data.websocket.impl.WebSocketRepositoryImpl.handleEvent(WebSocketRepositoryImpl.kt:241) 
        at io.homeassistant.companion.android.common.data.websocket.impl.WebSocketRepositoryImpl.access$handleEvent(WebSocketRepositoryImpl.kt:47) 
        at io.homeassistant.companion.android.common.data.websocket.impl.WebSocketRepositoryImpl$onMessage$1.invokeSuspend(WebSocketRepositoryImpl.kt:286) 
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) 
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) 
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571) 
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750) 
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678) 
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665) 

Screenshots

Link to pull request in Documentation repository

Documentation: home-assistant/companion.home-assistant#

Any other notes

Copy link
Member

@dshokouhi dshokouhi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me, tough to reproduce these ones

@JBassett JBassett merged commit 81975c7 into master Dec 11, 2021
@JBassett JBassett deleted the bugfix/websocketCrash branch December 11, 2021 02:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants