Currently the group state of user-defined-type is encoded as top-level columns in the unsaferows stores in state store. The timeout timestamp is also saved as (when needed) as the last top-level column. Since, the groupState is serialized to top level columns, you cannot save "null" as a value of state (setting null in all the top-level columns is not equivalent). So we dont let the user to set the timeout without initializing the state for a key. Based on user experience, his leads to confusion.
This JIRA is to change the row format such that the state is saved as nested columns. This would allow the state to be set to null, and avoid these confusing corner cases.