farmmamba created HDFS-17334:
--------------------------------
Summary: FSEditLogAsync#enqueueEdit does not synchronized this
before invoke wait method
Key: HDFS-17334
URL: https://issues.apache.org/jira/browse/HDFS-17334
Project: Hadoop HDFS
Issue Type: Bug
Components: namenode
Affects Versions: 3.3.6
Reporter: farmmamba
Assignee: farmmamba
Fix For: 3.5.0
In method FSEditLogAsync#enqueueEdit , there exist the below codes:
{code:java}
if (Thread.holdsLock(this)) {
// if queue is full, synchronized caller must immediately relinquish
// the monitor before re-offering to avoid deadlock with sync thread
// which needs the monitor to write transactions.
int permits = overflowMutex.drainPermits();
try {
do {
this.wait(1000); // will be notified by next logSync.
} while (!editPendingQ.offer(edit));
} finally {
overflowMutex.release(permits);
}
} {code}
It maybe invoke this.wait(1000) without having object this's monitor.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]