HADOOP-11710. Make CryptoOutputStream behave like DFSOutputStream wrt synchronization. (Sean Busbey via yliu)
(cherry picked from commit 813c93cb25
)
This commit is contained in:
parent
9642a861e1
commit
2230754f2a
|
@ -48,6 +48,9 @@ Release 2.6.1 - UNRELEASED
|
|||
HADOOP-11674. oneByteBuf in CryptoInputStream and CryptoOutputStream
|
||||
should be non static. (Sean Busbey via yliu)
|
||||
|
||||
HADOOP-11710. Make CryptoOutputStream behave like DFSOutputStream wrt
|
||||
synchronization. (Sean Busbey via yliu)
|
||||
|
||||
Release 2.6.0 - 2014-11-18
|
||||
|
||||
INCOMPATIBLE CHANGES
|
||||
|
|
|
@ -40,6 +40,9 @@ import com.google.common.base.Preconditions;
|
|||
* padding = pos%(algorithm blocksize);
|
||||
* <p/>
|
||||
* The underlying stream offset is maintained as state.
|
||||
*
|
||||
* Note that while some of this class' methods are synchronized, this is just to
|
||||
* match the threadsafety behavior of DFSOutputStream. See HADOOP-11710.
|
||||
*/
|
||||
@InterfaceAudience.Private
|
||||
@InterfaceStability.Evolving
|
||||
|
@ -125,7 +128,7 @@ public class CryptoOutputStream extends FilterOutputStream implements
|
|||
* @throws IOException
|
||||
*/
|
||||
@Override
|
||||
public void write(byte[] b, int off, int len) throws IOException {
|
||||
public synchronized void write(byte[] b, int off, int len) throws IOException {
|
||||
checkStream();
|
||||
if (b == null) {
|
||||
throw new NullPointerException();
|
||||
|
@ -212,14 +215,16 @@ public class CryptoOutputStream extends FilterOutputStream implements
|
|||
}
|
||||
|
||||
@Override
|
||||
public void close() throws IOException {
|
||||
public synchronized void close() throws IOException {
|
||||
if (closed) {
|
||||
return;
|
||||
}
|
||||
|
||||
super.close();
|
||||
freeBuffers();
|
||||
closed = true;
|
||||
try {
|
||||
super.close();
|
||||
freeBuffers();
|
||||
} finally {
|
||||
closed = true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -227,7 +232,7 @@ public class CryptoOutputStream extends FilterOutputStream implements
|
|||
* underlying stream, then do the flush.
|
||||
*/
|
||||
@Override
|
||||
public void flush() throws IOException {
|
||||
public synchronized void flush() throws IOException {
|
||||
checkStream();
|
||||
encrypt();
|
||||
super.flush();
|
||||
|
|
Loading…
Reference in New Issue