Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Invalid Resume Token

Saiba como recuperar de um token de currículo inválido em um conector de origem MongoDB Kafka.

O seguinte traçado de pilha indica que o conector de origem tem um token de currículo inválido:

...
org.apache.kafka.connect.errors.ConnectException: ResumeToken not found.
Cannot create a change stream cursor
...
Command failed with error 286 (ChangeStreamHistoryLost): 'PlanExecutor
error during aggregation :: caused by :: Resume of change stream was not
possible, as the resume point may no longer be in the oplog
...

Quando o ID do token de retomada do conector de origem não corresponde a nenhuma entrada no oplog do sistema do MongoDB, o conector não consegue determinar por onde começar a processar o change stream do MongoDB. Clique nas guias a seguir para ver os cenários em que você pode enfrentar esse problema:

Nesse cenário, você pausa o conector de origem e preenche o oplog da deployment do MongoDB:

  1. Você inicia um sistema do Kafka com um conector de origem MongoDB Kafka.

  2. Você produz um evento de alteração em seu namespace de origem do MongoDB e seu conector armazena um token de retomada correspondente a este evento.

  3. Você pausa seu conector de origem.

  4. Enquanto o conector pausa, você preenche o oplog do MongoDB de forma que o MongoDB exclua a entrada do oplog correspondente ao seu token de currículo.

  5. Você reinicia o conector de origem e ele não consegue retomar o processamento, pois o token de retomada não existe no oplog do MongoDB.

Para obter mais informações sobre o oplog, consulte o Manual do MongoDB.

Para obter mais informações sobre fluxos de mudança, consulte o guia Change Streams.

Você pode recuperar de um token de currículo inválido usando uma das seguintes estratégias:

Você pode configurar o conector de origem para tolerar erros enquanto produz um evento de fluxo de alterações que atualiza o token de retomada do conector. Essa estratégia de recuperação é a mais simples, mas há o risco de que o conector ignore brevemente erros não relacionados ao token de currículo inválido. Se você não se sentir confortável em tolerar brevemente erros em seu sistema, poderá excluir os deslocamentos armazenados .

Para configurar o conector de origem para tolerar temporariamente erros:

  1. Defina a opção errors.tolerance para tolerar todos os erros:

    errors.tolerance=all
  2. Insira, atualize ou exclua um documento na coleção referenciada pelo conector de origem para produzir um evento de fluxo de alterações que atualize o token de retomada do conector.

  3. Depois de produzir um evento de fluxo de alteração, defina a opção errors.tolerance para não tolerar mais erros:

    errors.tolerance=none

Para obter mais informações sobre a opção errors.tolerance, consulte a página Propriedades de tratamento de erros e retomada após interrupção.

Você pode redefinir seus dados de compensação do Kafka Connect, que contêm seu token de currículo, para permitir que seu conector continue processando seu fluxo de alterações.

Para redefinir seus dados de deslocamento, altere o valor da propriedade de configuração do offset.partition.name para um nome de partição que não existe em seu sistema do Kafka. Você pode definir sua propriedade offset.partition.name assim:

offset.partition.name=<a string>

Dica

Nomeando suas partições de deslocamento

Considere usar o seguinte padrão para nomear suas partições de deslocamento:

offset.partition.name=<source connector name>.<monotonically increasing number>

Esse padrão oferece os seguintes benefícios:

  • Registra o número de vezes que você redefine seu conector

  • Documentos ao qual conector pertence uma partição offset

Por exemplo, se você nomeou seu conector de origem "source-values" e está configurando a propriedade offset.partition.name pela primeira vez, configure seu conector da seguinte maneira:

offset.partition.name=source-values.1

Da próxima vez que redefinir os dados de deslocamento do seu conector, configure o conector da seguinte forma:

offset.partition.name=source-values.2

Para saber mais sobre a propriedade de configuração offset.partition.name, consulte a página Tratamento de erros e retomada a partir de propriedades de interrupção.

Para saber como nomear seu conector, consulte a documentação oficial do Apache Kafka.

To prevent invalid resume token errors caused by an infrequently updated namespace, enable heartbeats. Heartbeats is a feature of your source connector that causes your connector to update its resume token at regular intervals as well as when the contents of your source MongoDB namespace changes.

Especifique a seguinte opção na configuração do conector de origem para ativar heartbeats:

heartbeat.interval.ms=<a positive integer>

Para saber mais sobre pulsações, consulte o guia Tratamento de erros e retomada das propriedades de interrupção.