RFR: 8343250: ArrayBlockingQueue serialization not thread safe

duke duke at openjdk.org
Mon Nov 11 21:56:39 UTC 2024


On Wed, 30 Oct 2024 08:54:55 GMT, kabutz <duke at openjdk.org> wrote:

> The ArrayBlockingQueue has had a readObject() method since Java 7, which checks invariants of the deserialized object. However, it does not have a writeObject() method. This means that the ArrayBlockingQueue could be modified whilst it is being written, resulting in broken invariants. The readObject() method's invariant checking is not exhaustive, which means that it is possible to end up with ArrayBlockingQueue instances that contain null values, leading to a difference between "size()" and how many objects would be returned with "poll()".
> 
> The ABQ should get a writeObject() method that is locking on the same locks as the rest of the class.

@kabutz 
Your change (at version 5dc64f7ee613d2738c4abcf97aa79b81e7727f46) is now ready to be sponsored by a Committer.

-------------

PR Comment: https://git.openjdk.org/jdk/pull/21783#issuecomment-2469120159


More information about the core-libs-dev mailing list