Skip to content
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

Remove Class Reloading #6

Open
rrowlands opened this issue Nov 6, 2019 · 0 comments
Open

Remove Class Reloading #6

rrowlands opened this issue Nov 6, 2019 · 0 comments
Labels
enhancement New feature or request

Comments

@rrowlands
Copy link
Contributor

rrowlands commented Nov 6, 2019

Reasons to get rid of class reloading:

  1. Performance: Massive performance boosts when performing dataset management operations and universal modification operations. Additionally it should provide a system-wide performance boost (lock contention issues and parallel capable class reloading)
  2. Future tickets cost less. Also, if we ever bring on new developers the training will be easier.
  3. Stability
    1. This is the fix for ticket #4040 (less deadlocks).
    2. You will get less random errors when using the app (such as not being able to define a column which starts with a number).
    3. Additionally, when a class reload happens, currently executing threads tend to throw errors such as (dss.vector.solutions.geo.generated.Earth cannot be cast to dss.vector.solutions.geo.generated.Earth). These are unfixable problems as long as class reloading continues to exist.
    4. Finally, less buggy code getting deployed because the system is easier to test.
  4. Lower memory footprint
  5. It's already been implemented in Runway, meaning more than half of the work has already been done. We also get to merge with the latest Runway branch which means better support going forward.

What is a class reload, and when does it happen?

A class reload happens when a dataset definition changes, either when a new dataset is defined, an existing dataset definition is modified, or an existing dataset is deleted.

Planning

Some initial planning for this ticket was done on #3352, however is now irrelevant because the changes planned in #3352 have already been implemented in Runway.

  1. Merge DDMS onto the latest Runway version (todo: how much have the two branches diverged?)
  2. Convert all GeoEntity / Universal code to use a new "Universal" class and remove type-specific Universals
  3. TODO : Any expectations of generated code based on FormGenerator ?
  4. TODO : Custom code generator for DDMS?
  5. Remove all LoaderDecorator references. Also remove "Reloadable" interface.
  6. Test all the changes. TODO : Write a test plan.

#4035

@rrowlands rrowlands added the enhancement New feature or request label Nov 6, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant