Github user revans2 commented on the pull request:
https://github.com/apache/storm/pull/753#issuecomment-148382991
@wangli1426
Thrift classes have two options for member variables. required and
optional. If you mark a member as required it must be there or thrift will
throw an exception before serializing/deserializing it. This becomes a problem
if we want to do a rolling upgrade (upgrade the cluster with no downtime). In
that case we upgrade one daemon at a time, and there will be a period of time
when old clients are talking to new servers and/or new clients are talking to
old servers. If we add new required fields to thrift classes then the code
will break during the upgrade. However, if we mark them all as optional and
write the code in the client so it does not break if it gets a null for this
value, then we will be OK.
I don't want to break a rolling upgrade just so we can have a rate in the
UI.
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---