CheckForUpdatesFilter will cause a deadlock in the following circumstances.
1) Initial request is received and processing starts (CheckForUpdatesFilter read lock obtained)
2) Request processing triggers another http request to the same application
3) Nested request is received
4) CheckForUpdatesFilter determines it is time to check for file updates
5) CheckForUpdatesFilter tries to obtain write lock
6) Deadlock: Nested request is blocked waiting for read lock held by parent request to be released.
This is an unusual situation, generally I wouldn't try to to access a page via http whilst trying to process another request. However I ran across this problem whilst using a third party library (JasperReports) that referenced resources via http links.
Although uncommon, I believe Tapestry should be able to handle this without deadlocking