Github user srowen commented on a diff in the pull request:

    https://github.com/apache/spark/pull/8433#discussion_r37961669
  
    --- Diff: core/src/main/scala/org/apache/spark/Accumulators.scala ---
    @@ -47,7 +48,7 @@ import org.apache.spark.util.Utils
      * @tparam T partial data that can be added in
      */
     class Accumulable[R, T] private[spark] (
    -    @transient initialValue: R,
    +    @(transient @param @field) initialValue: R,
    --- End diff --
    
    Hm, tough call. If the code is acting like this is a field, and it's not, 
then that seems like a problem to solved in itself. I think a lot of the 
annotations could be removed. For example, `initialValue` here should never 
become a field in this object.
    
    I get the potential problem, that code changes in a way that makes this a 
field. If the field isn't serializable, it starts to fail. Unit tests would 
(hopefully) catch it. But, I also think that having such a new field become 
transient isn't a good solution; it piles an unintended change on an unintended 
change.
    
    In fact, I think a lot of current usages of `@transient` in the code are 
poor practice anyway; they exist to make an object serialize, but it's not 
clear that the object makes sense without the field after deserialization.
    
    What do you / others think about just removing these unneeded annotations?


---
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.
---

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to