-
Notifications
You must be signed in to change notification settings - Fork 1.7k
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
Transition away from Java serialization for storing state on disk or in Zookeeper #625
base: master
Are you sure you want to change the base?
Commits on Jul 21, 2013
-
Change StormTopology state serialization from Java to Thrift
config and nimbus currently use the core Java serialization to store StormTopology instances. This commit will change this to use Thrift serialization instead. StormTopology is a Thrift struct so this basically involves finding all the places we call `Utils/serialize` and `Utils/deserialize` and replace them with a call to a method that serializes with Thrift instead.
Configuration menu - View commit details
-
Copy full SHA for 59d4187 - Browse repository at this point
Copy the full SHA 59d4187View commit details -
Move serialization of Storm conf from Java default to Clojure default
config.clj and nimbus serialize Storm configuration using the default Java implementation. This commit will phase out Java default serialization in favor of Clojure default serialization. There are obviously many reasons to phase out Java serialization, but the main rationale is that Java serialization will complain about version mismatch even if the change is semantically backward compatible.
Configuration menu - View commit details
-
Copy full SHA for 46ca749 - Browse repository at this point
Copy the full SHA 46ca749View commit details -
Fix serialization concurrency bug
TSerializer is not threadsafe. In `Utils` we instantiate a static final Tserializer, but this can (and will) cause odd bugs if we start calling `serialize()` in different threads. Thus, every time we call `Utils/serializeTopology`, we create a new TSerializer. Another way to do this would be to lock it, which performance may or may not merit.
Configuration menu - View commit details
-
Copy full SHA for 44cfa94 - Browse repository at this point
Copy the full SHA 44cfa94View commit details -
Make serialization funcitons more generic
Serialization of configuration is handled in config, but it is not different from a generic method for Clojure form serialization. This commit will move this method to utils so that we can use it for other things, like serialization in cluster.
Configuration menu - View commit details
-
Copy full SHA for 50070c7 - Browse repository at this point
Copy the full SHA 50070c7View commit details -
Transition cluster state serialization to Clojure form serialization
cluster.clj uses the stock Java serialization implementation. There are obviously many reason to not use standard Java serialization, but our main motivation is that Java will complain about serialized state when the versions don't match even if they're semantically backwards compatible.
Configuration menu - View commit details
-
Copy full SHA for 9492da3 - Browse repository at this point
Copy the full SHA 9492da3View commit details -
Source LocalState serialization logic to state serialization interface
Supervisor currently just uses stock jvm serialization to communicate LocalState. This is undesirable for many reasons, so this commit will introduce a serialization interface which makes code cleaner, letting us specify which type of serializer to use without populating Supervisor with unnecessary boxing/unboxing behavior, or LocalState with too much knowledge about what's happening in the Supervisor. Also this commit will introduce a basic implementation sketch for a serializer for LocalState (though it will just use the jvm serialization at this point).
Configuration menu - View commit details
-
Copy full SHA for 00f0274 - Browse repository at this point
Copy the full SHA 00f0274View commit details -
Source LocalState constants to Constants.java
To build the serialization interface in Java, we need to put these constants in a Java file. This commit will put them in Constants.java
Configuration menu - View commit details
-
Copy full SHA for 9d673a8 - Browse repository at this point
Copy the full SHA 9d673a8View commit details -
Configuration menu - View commit details
-
Copy full SHA for 55682d8 - Browse repository at this point
Copy the full SHA 55682d8View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1aba69c - Browse repository at this point
Copy the full SHA 1aba69cView commit details -
Configuration menu - View commit details
-
Copy full SHA for 8a83664 - Browse repository at this point
Copy the full SHA 8a83664View commit details -
Configuration menu - View commit details
-
Copy full SHA for a70c170 - Browse repository at this point
Copy the full SHA a70c170View commit details -
Configuration menu - View commit details
-
Copy full SHA for 6366e75 - Browse repository at this point
Copy the full SHA 6366e75View commit details -
Fixup for rebase of hausdorff/ser_dev onto nathanmarz/master
Philip (flip) Kromer committedJul 21, 2013 Configuration menu - View commit details
-
Copy full SHA for b99a90b - Browse repository at this point
Copy the full SHA b99a90bView commit details