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 tipoidle-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
ouDataSafeClient
) e não definir oRetryConfiguration
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 comjavac
, 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.
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.
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:
- 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 deUploadManager.upload_stream()
. -
- 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