mirror of https://github.com/sbt/sbt.git
Don't wrongly take into account previously downloaded chunks in bitrate calculations
This commit is contained in:
parent
b0f437e99b
commit
aa836864a3
|
|
@ -230,6 +230,8 @@ lazy val cache = project
|
||||||
// New methdos in Cache.Logger
|
// New methdos in Cache.Logger
|
||||||
ProblemFilters.exclude[MissingMethodProblem]("coursier.Cache#Logger.checkingUpdates"),
|
ProblemFilters.exclude[MissingMethodProblem]("coursier.Cache#Logger.checkingUpdates"),
|
||||||
ProblemFilters.exclude[MissingMethodProblem]("coursier.Cache#Logger.checkingUpdatesResult"),
|
ProblemFilters.exclude[MissingMethodProblem]("coursier.Cache#Logger.checkingUpdatesResult"),
|
||||||
|
// Better overload of Cache.Logger.downloadLength, deprecate previous one
|
||||||
|
ProblemFilters.exclude[MissingMethodProblem]("coursier.Cache#Logger.downloadLength"),
|
||||||
// Changes to private class TermDisplay#Info
|
// Changes to private class TermDisplay#Info
|
||||||
ProblemFilters.exclude[MissingClassProblem]("coursier.TermDisplay$Info$"),
|
ProblemFilters.exclude[MissingClassProblem]("coursier.TermDisplay$Info$"),
|
||||||
ProblemFilters.exclude[AbstractClassProblem]("coursier.TermDisplay$Info"),
|
ProblemFilters.exclude[AbstractClassProblem]("coursier.TermDisplay$Info"),
|
||||||
|
|
|
||||||
|
|
@ -409,7 +409,7 @@ object Cache {
|
||||||
|
|
||||||
for (len0 <- Option(conn.getContentLengthLong) if len0 >= 0L) {
|
for (len0 <- Option(conn.getContentLengthLong) if len0 >= 0L) {
|
||||||
val len = len0 + (if (partialDownload) alreadyDownloaded else 0L)
|
val len = len0 + (if (partialDownload) alreadyDownloaded else 0L)
|
||||||
logger.foreach(_.downloadLength(url, len))
|
logger.foreach(_.downloadLength(url, len, alreadyDownloaded))
|
||||||
}
|
}
|
||||||
|
|
||||||
val in = new BufferedInputStream(conn.getInputStream, bufferSize)
|
val in = new BufferedInputStream(conn.getInputStream, bufferSize)
|
||||||
|
|
@ -747,9 +747,17 @@ object Cache {
|
||||||
|
|
||||||
trait Logger {
|
trait Logger {
|
||||||
def foundLocally(url: String, f: File): Unit = {}
|
def foundLocally(url: String, f: File): Unit = {}
|
||||||
|
|
||||||
def downloadingArtifact(url: String, file: File): Unit = {}
|
def downloadingArtifact(url: String, file: File): Unit = {}
|
||||||
|
|
||||||
|
@deprecated("Use / override the variant with 3 arguments instead")
|
||||||
def downloadLength(url: String, length: Long): Unit = {}
|
def downloadLength(url: String, length: Long): Unit = {}
|
||||||
|
def downloadLength(url: String, totalLength: Long, alreadyDownloaded: Long): Unit = {
|
||||||
|
downloadLength(url, totalLength)
|
||||||
|
}
|
||||||
|
|
||||||
def downloadProgress(url: String, downloaded: Long): Unit = {}
|
def downloadProgress(url: String, downloaded: Long): Unit = {}
|
||||||
|
|
||||||
def downloadedArtifact(url: String, success: Boolean): Unit = {}
|
def downloadedArtifact(url: String, success: Boolean): Unit = {}
|
||||||
def checkingUpdates(url: String, currentTimeOpt: Option[Long]): Unit = {}
|
def checkingUpdates(url: String, currentTimeOpt: Option[Long]): Unit = {}
|
||||||
def checkingUpdatesResult(url: String, currentTimeOpt: Option[Long], remoteTimeOpt: Option[Long]): Unit = {}
|
def checkingUpdatesResult(url: String, currentTimeOpt: Option[Long], remoteTimeOpt: Option[Long]): Unit = {}
|
||||||
|
|
|
||||||
|
|
@ -248,6 +248,7 @@ class TermDisplay(
|
||||||
|
|
||||||
private case class DownloadInfo(
|
private case class DownloadInfo(
|
||||||
downloaded: Long,
|
downloaded: Long,
|
||||||
|
previouslyDownloaded: Long,
|
||||||
length: Option[Long],
|
length: Option[Long],
|
||||||
startTime: Long,
|
startTime: Long,
|
||||||
updateCheck: Boolean
|
updateCheck: Boolean
|
||||||
|
|
@ -258,7 +259,7 @@ class TermDisplay(
|
||||||
def rate(): Option[Double] = {
|
def rate(): Option[Double] = {
|
||||||
val currentTime = System.currentTimeMillis()
|
val currentTime = System.currentTimeMillis()
|
||||||
if (currentTime > startTime)
|
if (currentTime > startTime)
|
||||||
Some(downloaded.toDouble / (System.currentTimeMillis() - startTime) * 1000.0)
|
Some((downloaded - previouslyDownloaded).toDouble / (System.currentTimeMillis() - startTime) * 1000.0)
|
||||||
else
|
else
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
|
|
@ -387,16 +388,16 @@ class TermDisplay(
|
||||||
override def downloadingArtifact(url: String, file: File): Unit =
|
override def downloadingArtifact(url: String, file: File): Unit =
|
||||||
newEntry(
|
newEntry(
|
||||||
url,
|
url,
|
||||||
DownloadInfo(0L, None, System.currentTimeMillis(), updateCheck = false),
|
DownloadInfo(0L, 0L, None, System.currentTimeMillis(), updateCheck = false),
|
||||||
s"Downloading $url\n"
|
s"Downloading $url\n"
|
||||||
)
|
)
|
||||||
|
|
||||||
override def downloadLength(url: String, length: Long): Unit = {
|
override def downloadLength(url: String, totalLength: Long, alreadyDownloaded: Long): Unit = {
|
||||||
val info = infos.get(url)
|
val info = infos.get(url)
|
||||||
assert(info != null)
|
assert(info != null)
|
||||||
val newInfo = info match {
|
val newInfo = info match {
|
||||||
case info0: DownloadInfo =>
|
case info0: DownloadInfo =>
|
||||||
info0.copy(length = Some(length))
|
info0.copy(length = Some(totalLength), previouslyDownloaded = alreadyDownloaded)
|
||||||
case _ =>
|
case _ =>
|
||||||
throw new Exception(s"Incoherent display state for $url")
|
throw new Exception(s"Incoherent display state for $url")
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue