Closed jd0-sag closed 8 years ago
@mathieucarbou @anthonydahanne @myronkscott @ramsai1729: Let me know what you think.
I would be in favor of 1. As we discussed, this seems to be the easier one and then the platform would be responsible for the serialization, the way it wants to do it.
I also like 1 for its simplicity. As a voltron user, 2 does not sound appealing :-) if 3 was chosen I'm pretty sure we would use a VoltronProxy-like layer to handle and keep in sync the codecs across nodes
For the most part, this change to Serializable is relatively straight-forward. The exception to this appears to be in PlatformClientFetchedEntity
since there is a ClientDescriptor
as part of it.
My current thinking is to make this a transient
instance variable for 2 reasons:
PlatformClientFetchedEntity
instances aren't created on the passive (meaning that this is well-defined way of limiting the scope of what is probably a moot point)
Currently,
IMonitoringProducer
accepts data in the form ofObject
instances. This works fine for objects which never leave the address space of the JVM. However, this limits how the data can be used. Specifically, it prevents the platform from being able to investigate ways of passing this data between servers on the same stripe, which will likely be required for effective monitoring of passive server state and entities.Here are 3 suggestions for how to address this, to get the conversation started:
Object
toSerializable
. This is simple but does fix the serialization approach which may appear sub-optimal to some use-cases.Object
tobyte[]
. This maximizes the freedom of the serialization approach but pushing this burden into the services and entities does make their implementation quite cumbersome.ServiceConfiguration
). This works well on the encoding side but not so well on the decoding side where it isn't clear which codec would be used (although it may be possible to assume they are the same, between servers, for a given consumer ID).