Skip to content
GitLab
  • Menu
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • Orekit Orekit
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 69
    • Issues 69
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 13
    • Merge requests 13
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Orekit
  • OrekitOrekit
  • Issues
  • #863
Closed
Open
Created Nov 28, 2021 by Luc Maisonobe@lucOwner

PropagatorsParallelizer has side effects on underlying propagators

PropagatorsParallelizer is intended to run propagators without the underlying propagators noticing they are managed from outside. It sometimes fails to be transparent enough, which introduces difficult bugs.

In order to know which propagator should run and which should be blocked, PropagatorsParallelizer calls the propagators interpolators, but these interpolators may be used by the raw propagator itself, so they are really called for multiple threads.

The first problem is that when propagators interpolators are evaluated, they do some regular interpolation and then they add the various additional states. Up to version 11.0.2, it involved static states and states manages by AdditionProviders, and as part of solving issue #856 (closed), it also involves integrable states. These states call user-defined callbacks, and these callbacks may not behave properly in multi-thread environment.

The second problem is that the interpolators restrictStep method is called from both PropagatorsParallelizer and the propagator (for example when handling events), and here again this does not work well in multi-thread contexts.

This is a difficult problem.

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
Time tracking