zio-nio icon indicating copy to clipboard operation
zio-nio copied to clipboard

isReachable is blocking fibers on thread pool

Open eugeny-stoyka opened this issue 7 months ago • 3 comments

Hello, i had problem with parallelism on this code (it block my fibers on it, and CPU utilization was on ~1%)

def run: ZIO[Any, Throwable, Unit] = {
  ipStream.mapZIOParUnordered(100000) {
        for {
          ipaddr <- InetAddress.byName(ip.toString)
          r <- ipaddr.isReachable(10000)
          _ <- if(r) Console.printLine(ip) else ZIO.none
        } yield ()
  }.runDrain
}

can you add new or edit current behavior of isReachable

def run: ZIO[Any, Throwable, Unit] = {
  ipStream.mapZIOParUnordered(100000) {
      ip =>
        for {
          ipaddr <- InetAddress.byName(ip.toString)
          r <- ZIO.blocking(ipaddr.isReachable(10000))
          _ <- if(r) Console.printLine(ip) else ZIO.none
        } yield ()
  }.runDrain
}

eugeny-stoyka avatar Jul 20 '24 12:07 eugeny-stoyka