When code model objects become invalid (for example, after reparse), some model clients can store the references to such
invalid objects and manipulate with them.
After we introduced repository, this often leads to calls to repository with inexistent keys, assertions, NPEs, etc.
We have boolean isValid() method in most of objects, but it does not always help since objects are usually processed in
a separate thread and nothing guarantees that valid/invalid state will change between "if" and the next code line.
This should be solved somehow.
In 5.5.1 there were a lot of fixes on code model clients side in this respect.
So now the consequences of this issue are very rare.
But the possibility of such issues still exists.
Besides, this makes clients code too complicated. There is no simple way to write a reliable model client - even the
most simple one.
For now we still have no particular complaints from QA, users or developers.
The issue is still to be solved, because leaving it as is
- makes writing client code very difficult
- can cause errors (exceptions)
But I'm sure this task should be waived (5.5.x -> 6.0)
We still have no particular complaints related with this.
I think we still need this, but mostly in order to make writing code model clients easier - which is very important for
community... but isn't a P2 defect of this release.