Hey,
In openair, I'm getting problems with dead instances. I think its maybe because I'm working against cells.
What I need to do is keep track somewhere of all the nodes that change in response to a request. Currently, this is done using an "update" slot which we setf on an xhtml observer.
(defobserver xhtml ((self html)) (when (and new-value (do-send self new-value old-value)) (trc "new xhtml" new-value) (setf (update self) (format nil "$("#~a").replaceWith("~a")" (md-name self) (js-escape new-value)))))
When a new request comes in, we do the following:
- walk the family tree, setting the update slot to nil. - feed the request parameters into the model - walk the family tree looking for places where update is not nil and sending it to the browser
In some cases, that works fine but in others, we find dead cells while walking the tree the first time.
Another point to note is that the update slot is specified as :cell nil. Based on its purpose and usage, does that make sense?
Should I be wrapping this traversal in with-integrity or something?
Cheers, Andy