Closed Bug 14899 Opened 21 years ago Closed 21 years ago

RDF/XML datasource Refresh() sends bad notifications

Categories

(Core Graveyard :: RDF, defect, P1, blocker)

defect

Tracking

(Not tracked)

CLOSED FIXED

People

(Reporter: waterson, Assigned: waterson)

References

Details

Attachments

(2 files)

Refresh() seems to be sending bad updates if the datasource has already been
loaded. I'll work up a test case. This'll cause problems for the sidebar and
flash panel to no end.
Status: NEW → ASSIGNED
Priority: P3 → P1
Target Milestone: M11
Attached file save as 'cust.xul'
To reproduce:

1. Save test case files as 'cust.xul' and 'local-panels.rdf', respectively.
2. Run viewer.
3. Open 'cust.xul' in viewer. You should see an HTML 'select' with four
elements in it.
4. Open a new viewer window (File->New Window)
5. Open 'cust.xul' in the new window.

Expected: see same four entries

Actual: both lists clear!
Blocks: 11501, 12799
oh this is evil. my 'mark and sweep' algorithm is breaking because of RDF
containers, which add assertions that are dependent on the current state of the
graph; e.g., RDF:nextVal.

So, for example, what happens is that you have an RDF container with two
elements in it. You refresh the file. The two elements stream in, and are added
as '3' and '4', instead of being recognized as the same '1' and '2' again.
Since '1' and '2' aren't marked, they get swept. Since sweeping happens after
assertion, the values disappear. UGh.
Ok, I think I have a good fix for this. I'm changing the semantics of
Make[Bag|Seq|Alt] s.t. each will actually re-initialize an
already-existing container. Doing the usual smoke tests seems to indicate that
nobody is relying on the current fact that Make[Bag|Seq|Alt] is idempotent (is
that the right word?) if the container already exists.
Status: ASSIGNED → RESOLVED
Closed: 21 years ago
Resolution: --- → FIXED
slamm carpooled this in with his sidebar changes.
Status: RESOLVED → CLOSED
Testcase not working. Discussed with Chris.  OK to close.
Product: Core → Core Graveyard
You need to log in before you can comment on or make changes to this bug.