Update http4s to 0.21.4

This commit is contained in:
Eike Kettner
2020-04-29 01:00:38 +02:00
parent c9bfc50eb9
commit 75a66ecb86
7 changed files with 68 additions and 37 deletions

View File

@ -0,0 +1,13 @@
package docspell.common
import cats.effect._
import scala.concurrent.ExecutionContext
/** Captures thread pools to use in an application.
*/
case class Pools(
connectEC: ExecutionContext,
httpClientEC: ExecutionContext,
blocker: Blocker,
restEC: ExecutionContext
)

View File

@ -4,6 +4,9 @@ import java.util.concurrent.atomic.AtomicLong
import java.util.concurrent.{Executors, ThreadFactory}
import cats.effect._
import scala.concurrent._
import java.util.concurrent.ForkJoinPool
import java.util.concurrent.ForkJoinPool.ForkJoinWorkerThreadFactory
import java.util.concurrent.ForkJoinWorkerThread
object ThreadFactories {
@ -19,6 +22,18 @@ object ThreadFactories {
}
}
def ofNameFJ(prefix: String): ForkJoinWorkerThreadFactory =
new ForkJoinWorkerThreadFactory {
val tf = ForkJoinPool.defaultForkJoinWorkerThreadFactory
val counter = new AtomicLong(0)
def newThread(pool: ForkJoinPool): ForkJoinWorkerThread = {
val t = tf.newThread(pool)
t.setName(s"$prefix-${counter.getAndIncrement()}")
t
}
}
def executorResource[F[_]: Sync](
c: => ExecutionContextExecutorService
): Resource[F, ExecutionContextExecutorService] =
@ -38,4 +53,19 @@ object ThreadFactories {
executorResource(
ExecutionContext.fromExecutorService(Executors.newFixedThreadPool(n, tf))
)
def workSteal[F[_]: Sync](
n: Int,
tf: ForkJoinWorkerThreadFactory
): Resource[F, ExecutionContextExecutorService] =
executorResource(
ExecutionContext.fromExecutorService(
new ForkJoinPool(n, tf, null, true)
)
)
def workSteal[F[_]: Sync](
tf: ForkJoinWorkerThreadFactory
): Resource[F, ExecutionContextExecutorService] =
workSteal[F](Runtime.getRuntime().availableProcessors() + 1, tf)
}