From de27c184696712fe408d0ab7ee0fab64debc3b2d Mon Sep 17 00:00:00 2001 From: Patrik Nordwall Date: Wed, 19 Apr 2017 19:05:19 +0200 Subject: [PATCH] Replace FileInputStream and FileOutputStream, #22733 (because they use finalize that is not gc friendly) --- akka-actor/src/main/scala/akka/io/TcpConnection.scala | 3 ++- .../persistence/snapshot/local/LocalSnapshotStore.scala | 5 +++-- .../scala/akka/remote/artery/BenchmarkFileReporter.scala | 4 ++-- .../scala/akka/remote/artery/MaxThroughputSpec.scala | 1 - .../scala/akka/remote/transport/netty/NettySSLSupport.scala | 6 ++++-- 5 files changed, 11 insertions(+), 8 deletions(-) diff --git a/akka-actor/src/main/scala/akka/io/TcpConnection.scala b/akka-actor/src/main/scala/akka/io/TcpConnection.scala index 80606d4d61..258f97983a 100644 --- a/akka-actor/src/main/scala/akka/io/TcpConnection.scala +++ b/akka-actor/src/main/scala/akka/io/TcpConnection.scala @@ -19,6 +19,7 @@ import akka.io.Inet.SocketOption import akka.io.Tcp._ import akka.io.SelectionHandler._ import akka.dispatch.{ UnboundedMessageQueueSemantics, RequiresMessageQueue } +import java.nio.file.Paths /** * Base class for TcpIncomingConnection and TcpOutgoingConnection. @@ -426,7 +427,7 @@ private[io] abstract class TcpConnection(val tcp: TcpExt, val channel: SocketCha def PendingWriteFile(commander: ActorRef, filePath: String, offset: Long, count: Long, ack: Event, tail: WriteCommand): PendingWriteFile = - new PendingWriteFile(commander, new FileInputStream(filePath).getChannel, offset, count, ack, tail) + new PendingWriteFile(commander, FileChannel.open(Paths.get(filePath)), offset, count, ack, tail) class PendingWriteFile( val commander: ActorRef, diff --git a/akka-persistence/src/main/scala/akka/persistence/snapshot/local/LocalSnapshotStore.scala b/akka-persistence/src/main/scala/akka/persistence/snapshot/local/LocalSnapshotStore.scala index ccb40cdd2b..57a4f004f7 100644 --- a/akka-persistence/src/main/scala/akka/persistence/snapshot/local/LocalSnapshotStore.scala +++ b/akka-persistence/src/main/scala/akka/persistence/snapshot/local/LocalSnapshotStore.scala @@ -19,6 +19,7 @@ import com.typesafe.config.Config import scala.collection.immutable import scala.concurrent.Future import scala.util._ +import java.nio.file.Files /** * INTERNAL API @@ -120,12 +121,12 @@ private[persistence] class LocalSnapshotStore(config: Config) extends SnapshotSt protected def withOutputStream(metadata: SnapshotMetadata)(p: (OutputStream) ⇒ Unit): File = { val tmpFile = snapshotFileForWrite(metadata, extension = "tmp") - withStream(new BufferedOutputStream(new FileOutputStream(tmpFile)), p) + withStream(new BufferedOutputStream(Files.newOutputStream(tmpFile.toPath())), p) tmpFile } private def withInputStream[T](metadata: SnapshotMetadata)(p: (InputStream) ⇒ T): T = - withStream(new BufferedInputStream(new FileInputStream(snapshotFileForWrite(metadata))), p) + withStream(new BufferedInputStream(Files.newInputStream(snapshotFileForWrite(metadata).toPath())), p) private def withStream[A <: Closeable, B](stream: A, p: A ⇒ B): B = try { p(stream) } finally { stream.close() } diff --git a/akka-remote-tests/src/multi-jvm/scala/akka/remote/artery/BenchmarkFileReporter.scala b/akka-remote-tests/src/multi-jvm/scala/akka/remote/artery/BenchmarkFileReporter.scala index ba0487bdca..b8835eb88d 100644 --- a/akka-remote-tests/src/multi-jvm/scala/akka/remote/artery/BenchmarkFileReporter.scala +++ b/akka-remote-tests/src/multi-jvm/scala/akka/remote/artery/BenchmarkFileReporter.scala @@ -4,7 +4,7 @@ package akka.remote.artery import java.io.File -import java.io.FileOutputStream +import java.nio.Files import java.text.SimpleDateFormat import java.util.Date @@ -40,7 +40,7 @@ object BenchmarkFileReporter { } val config = system.settings.config - val fos = new FileOutputStream(testResultFile) + val fos = Files.newOutputStream(testResultFile.toPath) reportResults(s"Git commit: $gitCommit") val settingsToReport = diff --git a/akka-remote-tests/src/multi-jvm/scala/akka/remote/artery/MaxThroughputSpec.scala b/akka-remote-tests/src/multi-jvm/scala/akka/remote/artery/MaxThroughputSpec.scala index ca27215139..7bcf703341 100644 --- a/akka-remote-tests/src/multi-jvm/scala/akka/remote/artery/MaxThroughputSpec.scala +++ b/akka-remote-tests/src/multi-jvm/scala/akka/remote/artery/MaxThroughputSpec.scala @@ -3,7 +3,6 @@ */ package akka.remote.artery -import java.io.FileOutputStream import java.nio.ByteBuffer import java.text.SimpleDateFormat import java.util.Date diff --git a/akka-remote/src/main/scala/akka/remote/transport/netty/NettySSLSupport.scala b/akka-remote/src/main/scala/akka/remote/transport/netty/NettySSLSupport.scala index a4c85b9c0e..b179c82b94 100644 --- a/akka-remote/src/main/scala/akka/remote/transport/netty/NettySSLSupport.scala +++ b/akka-remote/src/main/scala/akka/remote/transport/netty/NettySSLSupport.scala @@ -4,7 +4,7 @@ package akka.remote.transport.netty -import java.io.{ FileInputStream, FileNotFoundException, IOException } +import java.io.{ FileNotFoundException, IOException } import java.security._ import java.util.concurrent.atomic.AtomicReference import javax.net.ssl.{ KeyManagerFactory, SSLContext, TrustManagerFactory } @@ -18,6 +18,8 @@ import org.jboss.netty.handler.ssl.SslHandler import scala.annotation.tailrec import scala.util.Try +import java.nio.file.Files +import java.nio.file.Paths /** * INTERNAL API @@ -54,7 +56,7 @@ private[akka] class SSLSettings(config: Config) { try { def loadKeystore(filename: String, password: String): KeyStore = { val keyStore = KeyStore.getInstance(KeyStore.getDefaultType) - val fin = new FileInputStream(filename) + val fin = Files.newInputStream(Paths.get(filename)) try keyStore.load(fin, password.toCharArray) finally Try(fin.close()) keyStore }