Uploaded image for project: 'Fluid Infusion'
  1. Fluid Infusion
  2. FLUID-5498

Apply "transaction globbing" for any manual changes triggered as part of a change process



    • Type: Improvement
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: Data Binder
    • Labels:


      A feature that might be helpful, but will require some thought, is to apply "transaction globbing" to enlist a change made by a listener in reaction to a change process. The current metadata resourceInputPanel.js contains the following function:

          gpii.metadata.baseResourceInputPanel.updateModel = function (that, value, path, index, root) {
              var changePath = [root, index].concat(path);
              that.applier.change(changePath, value);

      This applies a form of "manual model relay" to deal with the fact that relay is coming from one of a number of dynamically generated components. It would be better to express this via configuration, but it is probably not currently possible to express relay to dynamic paths.

      The effect of this is to kick off a second transaction in the target components - whilst the first transaction has just concluded and is in the process of notifying its listeners (including this one). This made the issue FLUID-5497 somewhat harder to debug, although if this feature were implemented, that bug would still have had a damaging though slightly milder effect.

      One possible approach might be to automatically enlist any user in any transaction which is underway in their own applier, or anywhere on their current call stack - or at least provide a straightforward means for them to supply an annotation wishing that they wish to be enlisted. The effects of this might be awkward, however, and it might be best to maintain transactions as "isolated" from the user's (that is, the materialiser's) point of view. The best next step might be to improve our handling of dynamic components and dynamic relays so that manual relay of this kind isn't necessary.


          Issue Links



              antranig Antranig Basman
              antranig Antranig Basman
              0 Vote for this issue
              1 Start watching this issue