JDO
  1. JDO
  2. JDO-428

StateTransitionsReturnedObjects disallows makePersistent() on a detached-clean instance from being hollow

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Minor Minor
    • Resolution: Invalid
    • Affects Version/s: JDO 2 final (2.0)
    • Fix Version/s: None
    • Component/s: tck
    • Labels:
      None

      Description

      Element 10 (0-based) of the "makePersistent" array in org/apache/jdo/tck/lifecycle/StateTransitionsReturnedObjects.java asserts that a detached-clean instance passed to makePersistent() should have the resulting object be in the "persistent-clean" state. However, section 12.6.7 of the JDO 2 spec merely says that: "During application of changes of the detached state, if the JDO implementation can determine that there were no changes made during detachment, then the implementation is not required to mark the corresponding instance dirty." Based on this, it should be legal for the object to be in either the hollow state as well as the persistent-clean state.

      The easiest fix, short of changing the test case to allow for multiple states, is to change element 10 from "PERSISTENT_CLEAN" to "IMPOSSIBLE", which will disable the state check altogether.

        Activity

        Hide
        Craig L Russell added a comment -

        The spec describes what happens in the description of makePersistent:

        <spec>
        For a detached instance, they locate or create a persistent
        instance with the same JDO identity as the detached instance, and merge the persistent
        state of the detached instance into the persistent instance. Only the state of persistent fields
        is merged.
        </spec>

        The merge operation cannot result in a hollow instance.

        Show
        Craig L Russell added a comment - The spec describes what happens in the description of makePersistent: <spec> For a detached instance, they locate or create a persistent instance with the same JDO identity as the detached instance, and merge the persistent state of the detached instance into the persistent instance. Only the state of persistent fields is merged. </spec> The merge operation cannot result in a hollow instance.
        Hide
        Craig L Russell added a comment -

        The current fetch plan should not affect this behavior. The issue is what happens upon attachment via calling the makePersistent method. The fetch plan is operative during detachment and is not specified to have any effect on attachment.

        Show
        Craig L Russell added a comment - The current fetch plan should not affect this behavior. The issue is what happens upon attachment via calling the makePersistent method. The fetch plan is operative during detachment and is not specified to have any effect on attachment.
        Hide
        Matthew T. Adams added a comment -

        How does the current fetch plan affect this?

        Show
        Matthew T. Adams added a comment - How does the current fetch plan affect this?
        Hide
        Craig L Russell added a comment -

        It might be surprising for users who attach a detached instance and the clean state of the instance silently disappears. Why is this desirable?

        The answer will determine whether we consider this a spec bug to be fixed to specify that attaching a detached-clean instance results in a persistent-clean state or specify that the state can be persistent-clean or hollow.

        Show
        Craig L Russell added a comment - It might be surprising for users who attach a detached instance and the clean state of the instance silently disappears. Why is this desirable? The answer will determine whether we consider this a spec bug to be fixed to specify that attaching a detached-clean instance results in a persistent-clean state or specify that the state can be persistent-clean or hollow.

          People

          • Assignee:
            Craig L Russell
            Reporter:
            Marc Prud'hommeaux
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development