Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

Expose identifier for a connection bundle

Aberta
#406 4 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
4/5
Tempo estimado
3-5 dias
Facilidade para iniciantes
35/100
Tipo de issue
Funcionalidade
Clareza
Razoavelmente clara
Status de atividade
Estagnada
Stack de tecnologia
haskell

Direção de pesquisa

Comece rastreando como Connection, ErrorEvent e receive lidam com eventos de perda e abertura de conexão. Defina como ConnectionBundle é propagado pelos caminhos de conexão afetados e, em seguida, verifique se os eventos de perda identificam o bundle relevante e são observados antes de aberturas subsequentes para o mesmo peer.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

feature network-transport
-- Identifies a "heavyweight" connection which carries 0 or more "lightweight"
-- connections.
type ConnectionBundle = Word32

data ErrorEvent =
 ...
    -- EventConnectionLost indicates which bundle was lost
  | EventConnectionLost EndPointAddress ConnectionBundle
  ...

data Connection = Connection {
    ...
    -- Each connection knows which bundle carries it.
  , bundle :: ConnectionBundle
  }

Why?

When a connection is lost, an EventConnectionLost peer must be posted and ultimately come out of receive at that end point before any ConnectionOpened events to the same peer. While that event sits in the queue, new connections may be established to that same peer. Once the EventConnectionLost peer comes out of the queue it's impossible to determine which of the existing outbound lightweight connections are affected by it. By including a ConnectionBundle on every Connection and on the EventConnectionLost, it's possible to determine whether an outbound connection has been severed without trying to send on it.

Linguagem predominante
Haskell
Estrelas
753
Forks
101
Merge médio
1d 3h
PRs com merge (30d)
4

Preparar o ambiente

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de haskell-distributed/distributed-process

Todas as issues de haskell-distributed/distributed-process

Issues semelhantes

Mais issues de Haskell

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.