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

What's New in TM:PE 11.6.5.2 #1480

Merged
merged 37 commits into from
Apr 27, 2022
Merged

What's New in TM:PE 11.6.5.2 #1480

merged 37 commits into from
Apr 27, 2022

Conversation

originalfoo
Copy link
Member

@originalfoo originalfoo commented Mar 21, 2022

This is a bugfix release.
@originalfoo originalfoo added meta Build environment, github environment, etc. DO NOT MERGE YET Don't merge this PR, even if approved, until further notice labels Mar 21, 2022
@originalfoo originalfoo added this to the 11.6.5.2 milestone Mar 21, 2022
@originalfoo originalfoo self-assigned this Mar 21, 2022
@originalfoo
Copy link
Member Author

Looks like 11.6.5.2 is about ready. Will need to send another commit to this PR to update changelogs.

If anyone has any stuff that needs going in 11.6.5.2 lmk asap.

@krzychu124
Copy link
Member

krzychu124 commented Apr 12, 2022

Looks like 11.6.5.2 is about ready. Will need to send another commit to this PR to update changelogs.

If anyone has any stuff that needs going in 11.6.5.2 lmk asap.

So we are going to release an update which will make migration from TEST to Stable impossible because of introduced breaking changes in the serializable data?

@originalfoo
Copy link
Member Author

Is there no way we can fix that issue? Both the global config and the mod options now have version numbers so we can potentially translate back and fourth (might require a cherrypicked update to STABLE)?

Otherwise how are we going to get 11.6.5.2 out to test?

@krzychu124
Copy link
Member

Is there no way we can fix that issue?

Two and 1/2 ways:

  • revert the change - will break savegames already created with master branch if we do not add code which could optionally try to read changed things, so.... not the best idea
  • wait for @Elesbaan70 to implement serialization thingy - still may not fix the problem from the previous point
  • ignore it, release to TEST then as Stable - in case of any issues with loading data on current version we won't be able return to any previous(e.g.: via "revert to this version" using Steam workshop).

We currently use binary serialization, no way to load savegames from "the future"(without changing anything) if there was any change in the layout of data - that previous version (e.g. current Stable) has no idea how to read new/changed things so whole serialization will fail till we add migration code, which effectively means... release new version.

@originalfoo
Copy link
Member Author

Which aspects of the serialized data changed? Is it something that failed load will only break one tool, or does it break everything?

@krzychu124
Copy link
Member

Which aspects of the serialized data changed?

https://github.com/CitiesSkylinesMods/TMPE/pull/1211/files#diff-f665322d253fe3555fd1877d682fa1e6e219ae4e744486c93c98286d0d5d4f4e

Is it something that failed load will only break one tool, or does it break everything?

Everything. Binary serialization is "all or nothing" if you don't explicitly add methods to handle changed things in advance.
I'll say that once again because I'm aware it might not be obvious where is the problem. Master or 11.6.5.2 can read older data (lane connection settings, arrows, speed limits etc.) but saved games created with that version cannot be read by the older version of the mod (eg. current workshop Stable or anything older) because they don't expect change and don't have handlers to e.g. ignore or try transform unknown data.
Since we hold everything in one Configuration class and one data container then it will be complete wipe out of data from the user perspective.

I think that reverting names in that class to previous model would fix the problem but still requires implementing additional handling to read data from current master into original old version scheme. In any way it is a mess we need to fix as soon as possible changing serialization method and also change in the way we store things (data container per manager, not all in one)

Error stacktrace

Info 269.5560148: Loading Data from New Load Routine! Length=8943
Error 269.6905090: Error deserializing data: System.Runtime.Serialization.SerializationException: Field "sourceLaneId" not found in class TrafficManager.Configuration+LaneConnection
  at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ReadTypeMetadata (System.IO.BinaryReader reader, Boolean isRuntimeObject, Boolean hasTypeInfo) [0x00000] in <filename unknown>:0 
  at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ReadObjectInstance (System.IO.BinaryReader reader, Boolean isRuntimeObject, Boolean hasTypeInfo, System.Int64& objectId, System.Object& value, System.Runtime.Serialization.SerializationInfo& info) [0x00000] in <filename unknown>:0 
  at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ReadObject (BinaryElement element, System.IO.BinaryReader reader, System.Int64& objectId, System.Object& value, System.Runtime.Serialization.SerializationInfo& info) [0x00000] in <filename unknown>:0 
  at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ReadNextObject (System.IO.BinaryReader reader) [0x00000] in <filename unknown>:0 
  at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ReadObjectGraph (BinaryElement elem, System.IO.BinaryReader reader, Boolean readHeaders, System.Object& result, System.Runtime.Remoting.Messaging.Header[]& headers) [0x00000] in <filename unknown>:0 
  at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.NoCheckDeserialize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler) [0x00000] in <filename unknown>:0 
  at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream) [0x00000] in <filename unknown>:0 
  at TrafficManager.Lifecycle.SerializableDataExtension.DeserializeData (System.Byte[] data) [0x00000] in <filename unknown>:0 
   at CSUtil.Commons.Log.LogToFile(System.String log, LogLevel level)
   at CSUtil.Commons.Log.Error(System.String s)
   at TrafficManager.Lifecycle.SerializableDataExtension.DeserializeData(System.Byte[] data)
   at TrafficManager.Lifecycle.SerializableDataExtension.Load()
   at TrafficManager.Lifecycle.SerializableDataExtension.OnLoadData()
   at SerializableDataWrapper.OnLoadData()
   at SimulationManager.LateUpdateData(UpdateMode mode, Single minProgress, Single maxProgress)
   at SimulationManager.Managers_LateUpdateData(UpdateMode mode, Single minProgress, Single maxProgress)
   at LoadingManager+<LoadSimulationData>c__IteratorB.MoveNext()
   at AsyncTask.Execute()
   at SimulationManager.SimulationStep()
   at SimulationManager.SimulationThread()

Info 269.7049555:   at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ReadTypeMetadata (System.IO.BinaryReader reader, Boolean isRuntimeObject, Boolean hasTypeInfo) [0x00000] in <filename unknown>:0 
  at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ReadObjectInstance (System.IO.BinaryReader reader, Boolean isRuntimeObject, Boolean hasTypeInfo, System.Int64& objectId, System.Object& value, System.Runtime.Serialization.SerializationInfo& info) [0x00000] in <filename unknown>:0 
  at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ReadObject (BinaryElement element, System.IO.BinaryReader reader, System.Int64& objectId, System.Object& value, System.Runtime.Serialization.SerializationInfo& info) [0x00000] in <filename unknown>:0 
  at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ReadNextObject (System.IO.BinaryReader reader) [0x00000] in <filename unknown>:0 
  at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ReadObjectGraph (BinaryElement elem, System.IO.BinaryReader reader, Boolean readHeaders, System.Object& result, System.Runtime.Remoting.Messaging.Header[]& headers) [0x00000] in <filename unknown>:0 
  at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.NoCheckDeserialize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler) [0x00000] in <filename unknown>:0 
  at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream) [0x00000] in <filename unknown>:0 
  at TrafficManager.Lifecycle.SerializableDataExtension.DeserializeData (System.Byte[] data) [0x00000] in <filename unknown>:0 
Error 269.7069267: OnLoadData: Error while deserializing data: System.ApplicationException: An error occurred while loading
  at TrafficManager.Lifecycle.SerializableDataExtension.DeserializeData (System.Byte[] data) [0x00000] in <filename unknown>:0 
  at TrafficManager.Lifecycle.SerializableDataExtension.Load () [0x00000] in <filename unknown>:0 
   at CSUtil.Commons.Log.LogToFile(System.String log, LogLevel level)
   at CSUtil.Commons.Log.Error(System.String s)
   at TrafficManager.Lifecycle.SerializableDataExtension.Load()
   at TrafficManager.Lifecycle.SerializableDataExtension.OnLoadData()
   at SerializableDataWrapper.OnLoadData()
   at SimulationManager.LateUpdateData(UpdateMode mode, Single minProgress, Single maxProgress)
   at SimulationManager.Managers_LateUpdateData(UpdateMode mode, Single minProgress, Single maxProgress)
   at LoadingManager+<LoadSimulationData>c__IteratorB.MoveNext()
   at AsyncTask.Execute()
   at SimulationManager.SimulationStep()
   at SimulationManager.SimulationThread()

@krzychu124
Copy link
Member

@aubergine10 has anything left for updating here before merge?

@originalfoo
Copy link
Member Author

@krzychu124 Just this small PR from Kian related to the routing diagnostic tool: #1549

@originalfoo
Copy link
Member Author

Also #1523 is now merged - is that going in 11.6.5.2? If so I'll update changelogs.

@originalfoo originalfoo removed the DO NOT MERGE YET Don't merge this PR, even if approved, until further notice label Apr 27, 2022
@originalfoo
Copy link
Member Author

Is Vietnamese new language in 11.6.5.2 ? - if so I should probably mention that in changelogs

@kvakvs
Copy link
Collaborator

kvakvs commented Apr 27, 2022

Is Vietnamese new language in 11.6.5.2 ? - if so I should probably mention that in changelogs

I approved the strings but they aren't in the translation files yet. Some manual work is required to add a column to export files, so i decided to not pull that stunt in the Chinese branch.

@kianzarrin
Copy link
Collaborator

diagnosis tool is debug build only. it will not be release to test.

@krzychu124
Copy link
Member

@aubergine10 merge when ready, I'll build and release to the ws TEST and at the github releases page 😉

@krzychu124
Copy link
Member

@aubergine10 ready? ready? 😄

@originalfoo originalfoo merged commit e05bc36 into master Apr 27, 2022
@originalfoo originalfoo deleted the whats_new-11.6.5.2 branch April 27, 2022 18:27
@originalfoo
Copy link
Member Author

merged :)

@originalfoo originalfoo changed the title WIP: What's New in TM:PE 11.6.5.2 What's New in TM:PE 11.6.5.2 May 13, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
meta Build environment, github environment, etc.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants