Problemas conhecidos das ferramentas de desenvolvimento

Esta seção lista os problemas conhecidos identificados para o Developer Tools e SDKs.

Vazamento de thread em IdleConnectionMonitor no OCI Java SDK versões 3.31.0 a 3.38.0

Detalhes
Se você estiver usando qualquer versão do OCI Java SDK da 3.31.0 para a 3.38.0, poderá ver um vazamento de thread em IdleConnectionMonitor. Pode ocorrer um aumento no uso da CPU ou da memória devido à proliferação de threads do tipo idle-connection-monitor-thread.
Solução alternativa

Este problema foi corrigido na versão 3.39.0 e posterior. Se você estiver usando qualquer uma das versões anteriores afetadas, recomendamos atualizar para a versão 3.39.1 ou posterior. Para obter mais informações e outras possíveis soluções alternativas, consulte o problema em GitHub.

As repetições das operações que fazem upload de dados binários sem repetições no nível da solicitação falham nas versões 3.0.0 a 3.31.0 do OCI Java SDK

Detalhes
Se você estiver usando qualquer um dos clientes síncronos do OCI Java SDK que fazem upload de fluxos de dados (como ObjectStorageClient ou DataSafeClient) e não definir o RetryConfiguration no nível de solicitação, suas solicitações não serão repetidas automaticamente nas versões 3.0.0 a 3.31.0. Não há chance de corrupção silenciosa de dados.
Solução alternativa

Este problema foi corrigido na versão 3.31.1 e posterior. Se você estiver usando qualquer uma das versões anteriores afetadas, recomendamos que você atualize para a versão 3.31.1 ou posterior. Para obter mais informações e outras possíveis soluções alternativas, consulte o problema em GitHub.

Erros ao usar o Java SDK após a atualização para as versões 8u381, 11.0.20, 17.0.8 ou 21.0.0 do JDK

Detalhes
A seguinte mensagem de erro pode ser encontrada após a atualização para as versões 8u381, 11.0.20, 17.0.8 ou 21.0.0 do JDK:
java.lang.ClassNotFoundException: com.oracle.bmc.auth.AbstractAuthenticationDetailsProvider

Esse problema ocorre porque as versões do Java listadas têm um tamanho de arquivo de assinatura máximo padrão menor que alguns JARs do Java SDK. O valor padrão baixo no Java será tratado e resolvido nas próximas versões secundárias do Java.

Solução alternativa #1
Para resolver esse problema, você pode executar o Maven com o seguinte parâmetro:
-Djdk.jar.maxSignatureFileSize=16000000
Se você estiver compilando com javac, poderá usar o seguinte comando:
javac -J-Djdk.jar.maxSignatureFileSize=16000000 example.java

Condição de corrida do Java SDK em CircuitBreaker, levando a NoSuchElementException no OCI Java SDK

Detalhes
Se você estiver usando um OCI Java SDK da versão 2.47.0 para versões anteriores à 2.51.2, poderá encontrar um bug no CircuitBreaker que gere um NoSuchElementException. Para obter mais informações, consulte https://github.com/oracle/oci-java-sdk/issues/491
Solução alternativa #1

Esse problema foi resolvido no OCI Java SDK 2.51.2. Atualize para o OCI Java SDK versão versão 2.51.2 ou mais recente.

Solução alternativa no 2

Se não for possível atualizar para a versão 2.51.2 ou mais recente, você poderá desativar e desativar o suporte padrão do Java SDK para circuitos para clientes de serviço que ativaram circuitos SDK padrão.

Problema potencial de vazamento de memória do Python SDK ao criar repetidamente novos assinantes/clientes

Detalhes
Quando repetidamente cria novos signatários/objetos clientes com a autenticação de token Instance Principals, Resource Principal e Delegation, alguns objetos subjacentes não são removidos da memória, causando um vazamento de memória. Em nossos testes, a taxa de crescimento da memória é de ~10 MiB/hora quando apenas objetos cliente/assinante são criados em um loop infinito. O Cloud Shell é afetado pelo mesmo problema quando novos objetos cliente são criados repetidamente usando o Python SDK. Isso parece estar vindo de um vazamento de memória subjacente no pacote de solicitações. Para obter mais informações, consulte https://github.com/psf/requests/issues/4601.
Solução #1
Evite criar novos objetos signatário/cliente e reutilize os objetos existentes, se possível. Se você estiver usando a autenticação de token de delegação e precisar atualizar o valor do token de delegação, o exemplo a seguir mostrará como atualizar um assinante existente em vez de criar um novo signatário:
from oci.auth.signers import InstancePrincipalsDelegationTokenSigner
from oci.object_storage import ObjectStorageClient    

# Create signer and client
delegation_token_signer = InstancePrincipalsDelegationTokenSigner(delegation_token="delegation_token_value")
client = ObjectStorageClient(config={}, signer=delegation_token_signer)    

# Update the delegation token on the client
client.base_client.signer.delegation_token="new_delegation_token_value" 
Solução alternativa no 2
Use o assinador da solicitação de retirada.

Possível problema de corrompimento de dados no OCI Java SDK com upload de dados binários usando repetições padrão

Detalhes: Se você estiver usando qualquer um dos clientes síncronos do OCI Java SDK que fazem upload de fluxos de dados (por exemplo, ObjectStorageClient ou DataSafeClient) e não definir o RetryConfiguration no nível do cliente ou no nível de solicitação, poderá ser afetado por corrompimento de dados silencioso.

Solução alternativa: Estamos trabalhando ativamente para corrigir esse problema. Para obter mais informações e possíveis soluções alternativas, consulte o problema no GitHub.

Link direto para este problema: Possível problema de corrompimento de dados no OCI Java SDK com upload de dados binários usando repetições padrão

Regressão de desempenho no OCI Java SDK versões 2.14.1 e posteriores para todas as operações da API

Detalhes: Se você estiver usando as versões 2.14.1 e posteriores do OCI Java SDK, poderá encontrar regressões de desempenho ao usar o SDK para chamar operações de API em qualquer um dos serviços do OCI. A regressão causa um aumento de 30% a 60% na latência em operações SDK em qualquer um dos serviços do OCI.

Solução alternativa: para obter mais informações e possíveis soluções alternativas, consulte o problema em GitHub.

Link direto para este problema: Regressão de desempenho nas versões 2.14.1 e mais recentes do OCI Java SDK para todas as operações da API

Regressão de desempenho com o Apache Connector Provider no OCI SDK para Java

Detalhes: A partir da versão 2.0.0, o OCI SDK para Java suporta o uso do Jersey ApacheConnectorProvider em vez do Jersey padrão HttpUrlConnectorProvider para permitir que o Apache HttpClient faça chamadas de serviço do OCI.

O ApacheConnectorProvider suporta o uso do cabeçalho Expect por padrão para algumas operações do serviço Object Storage (consulte https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/100). Foi observado que isso causa regressão de desempenho nas mesmas operações do serviço Object Storage.

Solução alternativa: Você pode desativar o uso do cabeçalho Expect alternando de volta para o Jersey Default Connector (consulte https://docs.oracle.com/iaas/Content/API/SDKDocs/javasdkconfig.htm) ou se você já estiver usando o ApacheConnectorProvider, poderá desativar o cabeçalho Expect com o ApacheConnectorProvider, fazendo o seguinte ao inicializar o cliente:
final ApacheConnectorProperties apacheConnectorProperties =
        ApacheConnectorProperties.builder()
                .expectContinue(false) // disable the Expect header
                .build();

final ApacheConfigurator configurator =
        new ApacheConfigurator.NonBuffering(apacheConnectorProperties);
        
ObjectStorageClient objectStorageClient =
        ObjectStorageClient.builder()
                .clientConfigurator(configurator)
                .build(provider);

Link direto para este problema: Regressão de desempenho com o Apache Connector Provider no OCI SDK para Java

Resposta truncada para operações que retornam dados binários com o OCI Java SDK

Detalhes: Nas versões 2.0.0 a 2.13.0 da API do OCI Java SDK, algumas operações que retornam um fluxo de dados, mas não retornam o cabeçalho content-length na resposta, podem retornar dados truncados. Isso é causado pelo SDK que fecha prematuramente o fluxo antes de ler todos os dados.

Solução alternativa:Atualize o cliente OCI Java SDK para a versão 2.13.1 ou posterior. Para obter mais informações sobre esse problema e as soluções alternativas, consulte https://github.com/oracle/oci-java-sdk/issues/357

Link direto para este problema: Resposta executada para operações que retornam dados binários com o OCI Java SDK

O Go SDK não pode localizar automaticamente algumas regiões durante a execução no Cloud Shell

Detalhes: Por causa de alguns problemas com uma de suas dependências, o recurso Go SDK que permite aos clientes usar automaticamente novos realms que podem ser desconhecidos para o SDK não está funcionando no Cloud Shell.

A tentativa de executar código no Cloud Shell que usa esse recurso resultará na seguinte mensagem de erro:
can not create client, bad configuration: failed to get security token: failed to renew security token: failed to get security token: failed to call: Post "https://<endpoint>/v1/x509": dial tcp: lookup <endpoint> on 127.0.0.11:53: server misbehaving
panicked while retrying operation. Panic was: runtime error: invalid memory address or nil pointer dereference

Solução alternativa: Para resolver esse problema, ative a resolução de regiões usando o serviço de metadados da instância para Go SDK. Para obter mais informações, consulte: Adicionando Regiões

Problemas de aumento de latência nas operações para alguns serviços do OCI que usam os SDKS e outras ferramentas

Detalhes: Você pode encontrar um aumento na latência das operações feitas em alguns serviços do OCI que usam os SDKs, o Terraform, o Ansible e a CLI. Confirmou-se que esse problema impacta o serviço OCI Streaming e provavelmente também terá impacto nos serviços Email Delivery, Health Checks, NoSQL Database Cloud, Registry, Generic Artifacts e Web Application Acceleration and Security. Essa lista não é abrangente e é possível que você também encontre o problema em outros serviços do OCI. Confirmou-se que o problema NÃO afeta os serviços OCI Object Storage e Functions.

Os seguintes SDKs e ferramentas são afetados:

  • Go SDK (versão 41.2.0 e mais recentes)
  • .NET SDK (versão 14.2.0 e mais recentes)
  • Java SDK (versão 2.0.0 e mais recentes)
  • Python SDK (versão 2.38.4 e mais recentes)
  • CLI (versão 2.25.0 e mais recentes)
  • Módulos do PowerShell (versão 9.2.0 e mais recentes)
  • Módulos Ansible (versão 2.23.0 e mais recentes)
  • Provedor Terraform (versão 4.30.0 e mais recentes)

Soluções alternativas e mais informações: Estamos trabalhando ativamente para corrigir esse problema. Para obter mais informações e possíveis soluções alternativas, consulte o seguinte:

Link direto para este problema: Problemas de aumento de latência nas operações de alguns serviços OCI que usam os SDKS e outras ferramentas

As operações compostas do Python SDK geram um erro 404 NotAuthorizedOrNotFound, mesmo que a operação seja bem-sucedida

Detalhes: O copy_boot_volume_backup_and_wait_for_state e o copy_volume_backup_and_wait_for_state das operações do Composto do Cliente BlockStorage geram uma mensagem 404/NotAuthorizedOrNotFound ao copiar um backup de uma região para outra. Para obter mais informações, consulte: https://github.com/oracle/oci-python-sdk/issues/344.

Solução alternativa: Em vez de usar as operações compostas, use dois clientes diferentes para essa operação; um cliente na Região de Origem para enviar a solicitação de cópia do backup da Região A para a Região B, e um segundo cliente na região de Destino para aguardar que o backup se torne disponível. Veja o exemplo aqui: https://github.com/oracle/oci-python-sdk/blob/master/examples/copy_volume_backup_example.py

Link direto para este problema: As operações compostas do SDK do Python geram um erro 404 NotAuthorizedOrNotFound, mesmo que a operação seja bem-sucedida

Possível problema de arredondamento de dados para grandes números com o SDK do OCI para TypeScript e JavaScript

Detalhes: O SDK do OCI para TypeScript e JavaScript têm um problema conhecido com números grandes que sejam maiores que o Number.MAX_SAFE_INTEGER do JavaScript. Qualquer Número maior que Number.MAX_SAFE_INTEGER resultará em um problema de arredondamento.

Solução alternativa: Estamos cientes do problema em que uma resposta de API pode retornar um número maior que o Number.MAX_SAFE_INTERGER do JavaScript. No momento, o problema de arredondamento numérico não afeta a chamada de nenhuma API.

Link direto para este problema: Possível problema de arredondamento de dados para números grandes com SDK do OCI para TypeScript e JavaScript

Possível problema de corrompimento de dados com o OCI Java SDK no upload de dados binários com RefreshableOnNotAuthenticatedProvider

Detalhes: Ao usar a versão 1.25.1 ou anterior dos clientes OCI Java SDK que fazem upload de streams de dados (por exemplo, ObjectStorageClient ou FunctionsInvokeClient), de forma síncrona ou assíncrona, e você usa um RefreshableOnNotAuthenticatedProvider (por exemplo, para Principais de Recurso ou Principais de Instância) que pode ser afetado pelo corrompimento silencioso de dados.

Solução alternativa: Atualize o cliente OCI Java SDK para a versão 1.25.2 ou posterior. Para obter mais informações sobre esse problema e soluções alternativas, consulte Possível problema de corrompimento de dados para OCI Java SDK no upload de dados binários com RefreshableOnNotAuthenticatedProvider.

Link direto para este problema: Possível problema de corrompimento de dados com o OCI Java SDK no upload de dados binários com RefreshableOnNotAuthenticatedProvider

Possível problema de corrompimento de dados com o OCI HDFS Connector no upload de dados binários com RefreshableOnNotAuthenticatedProvider

Detalhes: Se você estiver usando a versão 3.2.1.1 ou anterior dos clientes do OCI HDFS Connector e usar RefreshableOnNotAuthenticatedProvider (por exemplo, InstancePrincipalsCustomAuthenticator, ou geralmente para Principais de Recurso ou de Instância), poderá ser afetado por corrompimento silencioso de dados.

Solução alternativa: Atualize o cliente do OCI HDFS Connector para a versão 3.2.1.3 ou posterior. Para obter mais informações sobre esse problema e soluções alternativas, consulte Possível problema de corrompimento de dados para o OCI HDFS Connector com RefreshableOnNotAuthenticatedProvider.

Link direto para este problema: Possível problema de corrompimento de dados potencial com o OCI HDFS Connector no upload de dados binários com RefreshableOnNotAuthenticatedProvider

Possível corrupção de dados com o SDK do Python no upload binário

Detalhes: Ao usar o SDK para Python na execução de operações de upload binário, você poderá encontrar um problema com corrupção de dados se novas tentativas forem permitidas ou se você estiver usando UploadManager.upload_file.

Solução alternativa: Estamos trabalhando em uma resolução. Para obter mais informações sobre esse problema e soluções alternativas, consulte Possível problema de corrupção de dados para nova tentativa do PythonSDK no upload de dados binários.

Link direto para este problema: Possível corrupção de dados com o SDK do Python no upload binário

Possível problema de corrompimento de dados com o SDK para Python e fluxos de upload

Atualizar: A causa raiz do problema que causa corrompimento de dados foi corrigida com a release v2.54.0. Use o oci v2.54.0 ou superior para evitar dados corrompidos. O comportamento das versões mais antigas do OCI Python SDK em relação a esse problema foi explicado abaixo.

Detalhes: Os clientes que usam o OCI SDK para Python e oci.object_storage.UploadManager.upload_stream no modo FIPS podem estar vulneráveis a corrupção silenciosa de dados. Se as circunstâncias para produzir o problema forem verdadeiras para o seu ambiente, o SDK reportará o sucesso da operação de upload, mas um objeto de tamanho 0 será submetido a upload.

A resolução difere, dependendo do estado do seu ambiente:

  1. Usar UploadManager.upload_stream() em um ambiente que usa uma versão do OpenSSL compatível com FIPS, na qual o SDK para Python não está operando no modo FIPS, conforme descrito em Usando bibliotecas validadas pelo FIPS.

    Para determinar se você está nesse cenário:

    • Verifique se você está usando uma versão do OpenSSL compatível com FIPS executando o comando openssl version. Se "fips" fizer parte do nome da versão e você não estiver operando o SDK no modo FIPS, estará nesse cenário.

    • Se oci.fips.is_fips_mode() não retornar True, é porque o SDK não está operando no modo FIPS.

    Solução alternativa: Faça upgrade do OCI SDK para Python para a versão 2.53.1 ou mais recente e opere o SDK para Python no modo FIPS, conforme descrito em Usando bibliotecas validadas pelo FIPS.
    Importante

    A não operação do SDK no modo FIPS durante o uso de uma versão do OpenSSL compatível com FIPS ainda corromperá os dados durante o uso de UploadManager.upload_stream().
  2. Usar UploadManager.upload_stream() quando o SDK para Python está operando no modo FIPS, conforme descrito em Usando bibliotecas validadas pelo FIPS e o SDK para Python é v2.53.0 ou mais antigo.

    Se oci.fips.is_fips_mode() retornar True, é porque o SDK está operando no modo FIPS.

    Resolução: Faça upgrade do OCI SDK para Python para a versão 2.53.1 ou mais recente.

Para obter mais informações sobre esse problema, consulte Possível problema de corrompimento de dados para upload de fluxo multiparte para o OCI Python SDK no GitHub.

Link direto para este problema: Possível problema de corrompimento de dados com o SDK para Python e fluxos de upload