google / google/error-prone

[2.17.0] GuardedBy on lambda

Open
#3,640 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
7.2k
Forks
820
Avg merge
5h 9m
Merged PRs (30d)
50

Description

The constructor assigns a `Consumer` to which is invoked under a lock. However the checker now fails by assuming it was invoked in the constructor.

```java
final Consumer> accessPolicy;
...
accessPolicy = (evicts() || expiresAfterAccess()) ? this::onAccess : e -> {};
...
/** Drains the read buffer. */
@GuardedBy("evictionLock")
void drainReadBuffer() {
if (!skipReadBuffer()) {
readBuffer.drainTo(accessPolicy);
}
}
```

```console
/Users/ben/projects/caffeine/caffeine/src/main/java/com/github/benmanes/caffeine/cache/BoundedLocalCache.java:270: error: [GuardedBy] This access should be guarded by 'this.evictionLock', which is not currently held
accessPolicy = (evicts() || expiresAfterAccess()) ? this::onAccess : e -> {};
^
(see https://errorprone.info/bugpattern/GuardedBy)
1 error
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.