Unix socket bind may delete an existing file when binding fails
I maintainer di solito rispondono entro 3 giorni
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 55/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- scala
- Ambito
- networking
Direzione di ricerca
Start with the Network[F].bind(UnixSocketAddress(...)) implementation and trace how deleteOnClose handles a failed bind. Use the provided Scala reproduction to confirm that the existing file is removed when binding raises BindException; the fix is done when a failed bind leaves the file intact while normal close behavior remains unchanged. Add or run the relevant Unix-socket binding tests once you locate the networking test suite.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Network[F].bind(UnixSocketAddress("/path/to/file")) deletes the file even when binding fails. deleteOnClose deletes the file not only when the socket is closed, but also when binding fails.
Reproduction:
//> using scala "3.9.0"
//> using dep "co.fs2::fs2-io:3.14.0"
import cats.effect.IO
import cats.effect.IOApp
import com.comcast.ip4s.UnixSocketAddress
import fs2.Stream
import fs2.io.file.Files
import fs2.io.net.Network
object App extends IOApp.Simple {
def run: IO[Unit] =
Files[IO].tempFile.use { path =>
for {
_ <- Stream
.emit("123456")
.through(Files[IO].writeUtf8(path))
.compile
.drain
_ <- IO.println(path)
before <- Files[IO].exists(path)
_ <- IO.println(s"Exists before bind: $before")
result <- Network[IO]
.bind(UnixSocketAddress(path.toString))
.use_
.attempt
_ <- IO.println(result)
after <- Files[IO].exists(path)
_ <- IO.println(s"Exists after failed bind: $after")
} yield ()
}
}
/tmp/17591615494821517556.tmp
Exists before bind: true
Left(java.net.BindException: Address in use)
Exists after failed bind: false
- Lingua principale
- Scala
- Stelle
- 2.5k
- Fork
- 633
- Merge medio
- 4g 16h
- PR unite (30g)
- 5
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di typelevel/fs2
-
Reading from a socket gets stuck on Node.js 26Forse già presa Una pull request collegata a questa issue è aperta o già unita. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 3 giorni
-
Scala Native TLSSocket#applicationProtocol behavior is inconsistent with JVMForse già presa @reardonj l’ha presa 17 giorni fa. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 25/100
I maintainer di solito rispondono entro 3 giorni
-
Feature Proposal: report progress writing to socketsForse già presa @reardonj l’ha presa 24 giorni fa. Aperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 45/100
I maintainer di solito rispondono entro 3 giorni
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
typelevel/fs2#3719 · 2 commenti ·
I maintainer di solito rispondono entro 3 giorni
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 55/100
I maintainer di solito rispondono entro 3 giorni
Tutte le issue di typelevel/fs2
Issue simili
-
[GC] Empty or non-numeric GC_*_HEAP_SIZE reads out of bounds or uses an uninitialised sizeForse già presa @oluies l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
scala-native/scala-native#5177 ·
I maintainer di solito rispondono entro 1 giorno
-
good first issue
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 78/100
promovolve/promovolve#358 ·
I maintainer di solito rispondono entro 1 giorno
-
Broken links in the docsAperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 95/100
svroonland/zio-kinesis#1431 ·
-
area:build priority:P2 status:backlog
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
KD5UJC-XYZ/scarab#648 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
lichess-org/lila#22324 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno