https://github.com/dashorst/jrebel-2018.2.2-serialization-reproduction
Provides a reproduction case for a bug in JRebel 2018.2.2 where a method reference is invoked during serialzation after a code modification. This is solved in the nightly of 20181114 and beyond.
https://github.com/dashorst/jrebel-2018.2.2-serialization-reproduction
Last synced: over 1 year ago
JSON representation
Provides a reproduction case for a bug in JRebel 2018.2.2 where a method reference is invoked during serialzation after a code modification. This is solved in the nightly of 20181114 and beyond.
- Host: GitHub
- URL: https://github.com/dashorst/jrebel-2018.2.2-serialization-reproduction
- Owner: dashorst
- Created: 2018-11-14T13:15:32.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2018-11-14T13:27:47.000Z (over 7 years ago)
- Last Synced: 2025-02-12T06:08:20.787Z (over 1 year ago)
- Language: Java
- Size: 24.4 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# JRebel 2018.2.2 Serialization invocation reproduction
Provides a reproduction case for a bug in JRebel 2018.2.2 where a method reference is invoked during serialzation after a code modification.
This is solved in the nightly of 20181114 and beyond.
## Scenario
1. Have a [page][page] with a [Lambda][lambdalink] method [reference][lambdause] you don't want to be called without explicit consent of your user (e.g. _Start global thermonuclear war_, or _Delete_)
2. Start the application with the JRebel agent 2018.2.2 enabled
3. Open that page instance (this serializes the page instance)
4. Modify some code (e.g. [change `System.err` to `System.out` or vice versa][modify])
5. JRebel updates the running code (YAY!)
6. Refresh the page in your browser causing it to be deserialized and then serialized
7. Observe the log output to show *"This shouldn't happen"*
You can also set a break point in the debugger on the [delete method]()
## Running
* Have JRebel 2018.2.2 installed and enabled.
* Run the class `Start` in `src/test/java/com/mycompany`
* Open http://localhost:8080
* Follow the instructions in the page
[page]: https://github.com/dashorst/jrebel-2018.2.2-serialization-reproduction/blob/master/src/main/java/com/mycompany/HomePage.java
[lambdalink]: https://github.com/dashorst/jrebel-2018.2.2-serialization-reproduction/blob/master/src/main/java/com/mycompany/LambdaLink.java
[lambdause]: https://github.com/dashorst/jrebel-2018.2.2-serialization-reproduction/blob/master/src/main/java/com/mycompany/HomePage.java#L12
[modify]: https://github.com/dashorst/jrebel-2018.2.2-serialization-reproduction/blob/master/src/main/java/com/mycompany/HomePage.java#L16