mirror of
https://github.com/facebook/sapling.git
synced 2025-01-07 14:10:42 +03:00
a411302ece
Propertycache used standard attribute assignment. In the repoview case, this assignment was forwarded to the unfiltered repo. This result in: (1) unfiltered repo got a potentially wrong cache value, (2) repoview never reused the cached value. This patch replaces the standard attribute assignment by an assignment to `objc.__dict__` which will bypass the `repoview.__setattr__`. This will not affects other `propertycache` users and it is actually closer to the semantic we need. The interaction of `propertycache` and `repoview` are now tested in a python test file.
85 lines
2.2 KiB
Plaintext
85 lines
2.2 KiB
Plaintext
|
|
=== property cache ===
|
|
|
|
calllog: []
|
|
cached value (unfiltered): NOCACHE
|
|
|
|
= first access on unfiltered, should do a call
|
|
access: 0
|
|
calllog: [0]
|
|
cached value (unfiltered): 0
|
|
|
|
= second access on unfiltered, should not do call
|
|
access 0
|
|
calllog: [0]
|
|
cached value (unfiltered): 0
|
|
|
|
= first access on "visible" view, should do a call
|
|
cached value ("visible" view): NOCACHE
|
|
access: 7
|
|
calllog: [0, 7]
|
|
cached value (unfiltered): 0
|
|
cached value ("visible" view): 7
|
|
|
|
= second access on "visible view", should not do call
|
|
access: 7
|
|
calllog: [0, 7]
|
|
cached value (unfiltered): 0
|
|
cached value ("visible" view): 7
|
|
|
|
= no effect on other view
|
|
cached value ("immutable" view): NOCACHE
|
|
access: 9
|
|
calllog: [0, 7, 9]
|
|
cached value (unfiltered): 0
|
|
cached value ("visible" view): 7
|
|
cached value ("immutable" view): 9
|
|
|
|
|
|
=== unfiltered property cache ===
|
|
|
|
unficalllog: []
|
|
cached value (unfiltered): NOCACHE
|
|
cached value ("visible" view): NOCACHE
|
|
cached value ("immutable" view): NOCACHE
|
|
|
|
= first access on unfiltered, should do a call
|
|
access (unfiltered): 100
|
|
unficalllog: [100]
|
|
cached value (unfiltered): 100
|
|
|
|
= second access on unfiltered, should not do call
|
|
access (unfiltered): 100
|
|
unficalllog: [100]
|
|
cached value (unfiltered): 100
|
|
|
|
= access on view should use the unfiltered cache
|
|
access (unfiltered): 100
|
|
access ("visible" view): 100
|
|
access ("immutable" view): 100
|
|
unficalllog: [100]
|
|
cached value (unfiltered): 100
|
|
cached value ("visible" view): NOCACHE
|
|
cached value ("immutable" view): NOCACHE
|
|
|
|
= even if we clear the unfiltered cache
|
|
cached value (unfiltered): NOCACHE
|
|
cached value ("visible" view): NOCACHE
|
|
cached value ("immutable" view): NOCACHE
|
|
unficalllog: [100]
|
|
access ("visible" view): 100
|
|
unficalllog: [100, 100]
|
|
cached value (unfiltered): 100
|
|
cached value ("visible" view): NOCACHE
|
|
cached value ("immutable" view): NOCACHE
|
|
access ("immutable" view): 100
|
|
unficalllog: [100, 100]
|
|
cached value (unfiltered): 100
|
|
cached value ("visible" view): NOCACHE
|
|
cached value ("immutable" view): NOCACHE
|
|
access (unfiltered): 100
|
|
unficalllog: [100, 100]
|
|
cached value (unfiltered): 100
|
|
cached value ("visible" view): NOCACHE
|
|
cached value ("immutable" view): NOCACHE
|