Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Menu Docs
Página inicial do Docs
/ / /
Driver de Kotlin Sync
/

Atualizar versões do driver

Nesta seção, você pode identificar as alterações que deve fazer no seu aplicação para atualizar seu driver para uma nova versão.

Antes de atualizar, execute as seguintes ações:

  • Certifique-se de que a nova versão do driver seja compatível com as versões do MongoDB Server às quais seu aplicação se conecta e com o Java Runtime Environment (JRE) em que seu aplicação é executado. Para visualizar informações de compatibilidade, consulte a páginade compatibilidade do.

  • Resolva quaisquer alterações significativas entre a versão atual do driver que seu aplicação está usando e a versão de atualização planejada na seçãoAlterações significativas. Para saber mais sobre as alterações de compatibilidade da versão do MongoDB Server , consulte a seção Alterações de compatibilidade da versão do servidor.

Dica

Para minimizar o número de alterações que seu aplicação pode exigir quando você atualizar as versões do driver no futuro, use a API estável.

Uma alteração interruptiva é uma modificação em uma convenção ou comportamento em uma versão específica do driver que pode impedir que sua aplicação funcione corretamente se não for resolvida antes da atualização.

As mudanças significativas nesta seção são categorizadas pela versão do driver que as introduziram. Ao atualizar as versões do driver, resolva todas as alterações significativas entre a versão atual e a atualizada. Por exemplo, se você estiver atualizando o driver da v5.0 para a v5.5, resolva todas as alterações significativas das versões posteriores à v5.0 incluindo qualquer um listado para v5.5.

Esta versão do driver apresenta a seguinte alteração interruptiva:

  • Elimina o suporte para o MongoDB Server v3.6. Para saber mais sobre essa alteração, consulte a seção Alterações de suporte do servidor da versão do 5.2 driver.

  • Revisa a versão de dependência mongodb-crypt para corresponder à versão dos drivers da JVM . Versões futuras do mongodb-crypt são lançadas junto com o driver e compartilham o mesmo número da versão. Você deve atualizar sua dependência mongodb-crypt para v5.2.0 ao atualizar seu driver para esta versão.

Esta versão do driver apresenta a seguinte alteração interruptiva:

  • Ao usar o mecanismo de autenticação MONGODB-OIDC , você não pode incluir vírgulas no valor da string de conexão authMechanismProperties. Se o seu valor authMechanismProperties incluir uma vírgula, passe o valor como uma opção de conexão em uma instância MongoClientSettings.

Esta versão do driver apresenta a seguinte alteração interruptiva:

  • Introduza as seguintes alterações na classe ConnectionId:

    • O construtor ConnectionId agora aceita um valor do tipo long como seu segundo parâmetro em vez do tipo int. Da mesma forma, o construtor agora aceita um valor do tipo Long como seu terceiro parâmetro em vez do tipo Integer. Como essa alteração quebra a compatibilidade binária, recrie qualquer código existente que chame o construtor ConnectionId .

    • O método withServerValue() agora aceita um parâmetro do tipo long em vez do tipo int. Como essa alteração quebra a compatibilidade binária, você deve recompilar qualquer código que chame o método withServerValue().

    • O método getServerValue() agora retorna um valor do tipo Long em vez do tipo Integer . Da mesma forma, o método getLocalValue() retorna um valor do tipo long em vez do tipo int. Como essa alteração quebra a compatibilidade binária e de origem, atualize qualquer código-fonte que use esses métodos e reconstrua seu binário.

  • Substitui as seguintes anotações de registro do pacote org.bson.codecs.record.annotations por anotações do mesmo nome do pacote org.bson.codecs.pojo.annotations :

    • BsonId

    • BsonProperty

    • BsonRepresentation

  • Altera o tipo de dados do parâmetro de duração do tempo limite connectTimeout para os métodos SocketSettings.Builder.connectTimeout() e SocketSettings.Builder.readTimeout(). O tipo de dados deste parâmetro é agora long em vez de int.

    Nas versões anteriores, esse parâmetro é do tipo int para ambos os métodos. Essa alteração quebra a compatibilidade binária e requer recompilação, mas não requer alterações de código.

  • Remove o método Filters.eqFull(), lançado exclusivamente em Beta, que permitia construir um filtro de igualdade ao executar uma pesquisa vetorial. Em vez disso, você pode usar o método Filters.eq() ao instanciar um tipo VectorSearchOptions, conforme mostrado no código a seguir:

    val opts = vectorSearchOptions().filter(eq("x", 8))
  • Altera como ClusterSettings calcula a configuração ClusterConnectionMode, tornando-a mais consistente usando o nome do conjunto de réplicas especificado, independentemente de como ela é configurada. Anteriormente, o driver tratava o nome do conjunto de réplicas somente se ele fosse definido na string de conexão.

    Por exemplo, as duas amostras de código a seguir retornam o valor ClusterConnectionMode.MULTIPLE. Anteriormente, o segundo exemplo retornava ClusterConnectionMode.SINGLE.

    ClusterSettings.builder()
    .applyConnectionString(ConnectionString("mongodb://127.0.0.1:27017/?replicaSet=replset"))
    .build()
    .mode
    ClusterSettings.builder()
    .hosts(listOf(ServerAddress("127.0.0.1", 27017)))
    .requiredReplicaSetName("replset")
    .build()
    .mode
  • BsonDecimal128 os valores respondem às chamadas de método da mesma forma que os valores Decimal128 . BsonDecimal128.isNumber() agora retorna true e BsonDecimal128.asNumber() retorna o equivalente BsonNumber.

  • Remove os métodos ServerAddress getSocketAddress() e getSocketAddresses().

    Em vez de getSocketAddress(), utilize o método de instância getByName() de java.net.InetAddress.

    Em vez de getSocketAddresses(), utilize o método de instância getAllByName() de java.net.InetAddress.

  • Remove os métodos UnixServerAddress getSocketAddress() e getUnixSocketAddress().

    Em vez de getSocketAddress(), utilize o método de instância getByName() de java.net.InetAddress.

    Em vez de getUnixSocketAddress(), construa uma instância de jnr.unixsocket.UnixSocketAddress. Passe o caminho completo do arquivo de soquete UNIX para o construtor. Por padrão, o MongoDB cria um arquivo de soquete UNIX localizado em "/tmp/mongodb-27017.sock". Para saber mais sobre a UnixSocketAddress classe, consulte a documentação da API UnixSocketAddress.

  • Remove a interface do Parameterizable . Em vez de implementar essa interface em um tipo Codec personalizado, substitua o método CodecProvider.get() no CodecProvider do codec se o codec for destinado a um tipo parametrizado.

  • Remove o método isSlaveOk() das classes ReadPreference e TaggableReadPreference . Para verificar se uma preferência de leitura permite a leitura de um membro secundário de um conjunto de réplicas, use os métodos isSecondaryOk() dessas classes.

  • Remove os métodos auxiliares DBCollection.getStats() e DBCollection.isCapped() do comando collStats. Em vez desses métodos, você pode utilizar o estágio de pipeline de agregação $collStats.

  • Remove as classes MapCodec e IterableCodec . Em vez de MapCodec, use MapCodecProvider. Em vez de IterableCodec , use CollectionCodecProvider ou IterableCodecProvider para tipos de Iterable que não são tipos Collection .

  • Remove os métodos sharded() e nonAtomic() das classes MapReducePublisher e MapReduceIterable .

  • Remove os seguintes métodos para utilizar com índices geoHaystack :

    • Indexes.geoHaystack()

    • IndexOptions.getBucketSize()

    • IndexOptions.bucketSize()

    Em vez disso, você pode usar o estágio de pipeline de agregação $geoNear ou um operador de query geoespacial em um índice 2d. Para obter mais informações, consulte a página de queries geoespaciais no manual do MongoDB Server.

  • Remove a opção oplogReplay das operações de localização. Os seguintes métodos do oplogReplay não estão mais disponíveis:

    • DBCursor.oplogReplay()

    • DBCollectionFindOptions.isOplogReplay()

    • DBCollectionFindOptions.oplogReplay()

    • FindPublisher.oplogReplay()

    • FindIterable.oplogReplay()

  • Remove os seguintes construtores Exception :

    • MongoBulkWriteException(BulkWriteResult, List<BulkWriteError>, WriteConcernError, ServerAddress)

    • MongoCursorNotFoundException(long, ServerAddress)

    • MongoQueryException(ServerAddress, int, String)

    • MongoQueryException(ServerAddress, int, String, String)

    • MongoQueryException(MongoCommandException)

  • Remove as seguintes sobrecargas para o método BulkWriteResult.acknowledged() :

    • acknowledged(Type, int, List<BulkWriteUpsert>)

    • acknowledged(Type, int, Integer, List<BulkWriteUpsert>)

    • acknowledged(int, int, int, Integer, List<BulkWriteUpsert>)

  • Remove os seguintes construtores ChangeStreamDocument :

    • ChangeStreamDocument(String, BsonDocument, BsonDocument, BsonDocument, TDocument, TDocument, BsonDocument, ...)

    • ChangeStreamDocument(String, BsonDocument, BsonDocument, BsonDocument, TDocument, BsonDocument, BsonTimestamp, ...)

    • ChangeStreamDocument(OperationType, BsonDocument, BsonDocument, BsonDocument, TDocument, BsonDocument, BsonTimestamp, ...)

  • Remove os seguintes construtores para eventos:

    • CommandEvent(RequestContext, int, ConnectionDescription, String)

    • CommandEvent(int, ConnectionDescription, String)

    • CommandEvent(RequestContext, long, int, ConnectionDescription, String)

    • CommandFailedEvent(RequestContext, int, ConnectionDescription, String, long, Throwable)

    • CommandFailedEvent(int, ConnectionDescription, String, long, Throwable)

    • CommandStartedEvent(RequestContext, int, ConnectionDescription, String, String, BsonDocument)

    • CommandStartedEvent(int, ConnectionDescription, String, String, BsonDocument)

    • CommandSucceededEvent(RequestContext, int, ConnectionDescription, String, BsonDocument, long)

    • CommandSucceededEvent(int, ConnectionDescription, String, BsonDocument, long)

    • ConnectionCheckedInEvent(ConnectionId)

    • ConnectionCheckedOutEvent(ConnectionId, long)

    • ConnectionCheckedOutEvent(ConnectionId)

    • ConnectionCheckOutFailedEvent(ServerId, long, Reason)

    • ConnectionCheckOutFailedEvent(ServerId, Reason)

    • ConnectionCheckOutStartedEvent(ServerId)

    • ConnectionReadyEvent(ConnectionId)

    • ServerHeartbeatFailedEvent(ConnectionId, long, Throwable)

    • ServerHeartbeatSucceededEvent(ConnectionId, BsonDocument, long)

  • Remove a opção errorLabels da classe WriteConcernError . Isso inclui os métodos addLabel() e getErrorLabels() e o construtor que inclui um parâmetro errorLabels . Em vez disso, você pode usar os rótulos de erro incluídos no objeto MongoException que contém o WriteConcernError.

  • Remove as seguintes classes do pacote com.mongodb.event :

    • ConnectionAddedEvent

    • ConnectionPoolOpenedEvent

    • ConnectionRemovedEvent

    • ClusterListenerAdapter

    • ConnectionPoolListenerAdapter

    • ServerListenerAdapter

    • ServerMonitorListenerAdapter

    O driver também remove os seguintes métodos relacionados da interface ConnectionPoolListener:

    • connectionAdded()

    • connectionPoolOpened()

    • connectionRemoved()

    Para obter mais informações sobre o com.mongodb.event pacote, consulte a documentação da API.

  • Adiciona a opção authorizedCollection para o comando listCollections. Isso introduz uma alteração binária de quebra no método MongoDatabase.listCollectionNames(). Essa alteração não requer nenhuma alteração no código-fonte, mas você deve recompilar qualquer código que use esse método.

  • Remove os seguintes métodos e tipos relacionados à interface Stream:

    • MongoClientSettings.Builder.streamFactoryFactory() método. Use o método MongoClientSettings.Builder.transportSettings().

    • MongoClientSettings.getStreamFactoryFactory() método. Use o método MongoClientSettings.getTransportSettings().

    • NettyStreamFactoryFactory classe. Em vez disso, chame o método TransportSettings.nettyBuilder() para criar um objeto NettyTransportSettings. Em seguida, chame o método MongoClientSettings.Builder.transportSettings() para aplicar as configurações.

    • NettyStreamFactory classe.

    • AsynchronousSocketChannelStreamFactory classe.

    • AsynchronousSocketChannelStreamFactoryFactory classe.

    • BufferProvider interface.

    • SocketStreamFactory classe.

    • Stream interface.

    • StreamFactory interface.

    • StreamFactoryFactory interface.

    • TlsChannelStreamFactoryFactory classe.

Dica

Para visualizar as alterações significativas em versões anteriores do driver, consulte as Notas de versão no repositório mongo-java-driver do Github.

Uma alteração de compatibilidade de versão do servidor é uma modificação no driver do Kotlin Sync que descontinua o suporte para um conjunto de versões do MongoDB Server .

O driver interrompe o suporte para uma versão do Servidor MongoDB após atingir o fim da vida útil (EOL).

Para saber mais sobre o suporte MongoDB para produtos EOL, consulte a Política de Suporte Legado.

Você não pode usar uma versão 3.x do driver do Kotlin Sync para se conectar a uma implementação do MongoDB executando o MongoDB Server v8.1 ou posterior. Iniciando no MongoDB Server v8.1, o comando buildinfo exige autenticação, causando uma incompatibilidade com o v3.x motorista.

O driver v5.5 elimina o suporte para o MongoDB Server 4.0. Para usar o v5.5 driver, você deve se conectar ao MongoDB Server 4.2 ou posterior. Para saber como atualizar seu sistema do MongoDB Server, consulte Notas de versão no manual do MongoDB Server.

O driver v5.2 elimina o suporte para o MongoDB Server 3.6. Para usar o v5.2 driver, você deve se conectar ao MongoDB Server 4.0 ou posterior. Para saber como atualizar seu sistema do MongoDB Server, consulte Notas de versão no manual do MongoDB Server.

O driver v4.8 elimina o suporte para o MongoDB Server 3.4 e versões anteriores. Para usar o v4.8 driver, você deve se conectar ao MongoDB Server 3.6 ou posterior. Para saber como atualizar seu sistema do MongoDB Server, consulte Notas de versão no manual do MongoDB Server.

Voltar

Compatibilidade

Nesta página