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

google.protobuf.message.DecodeError when passed objects with nested levels above 30

Aberta
#129 1 comentário 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
Bug
Clareza
Razoavelmente clara
Status de atividade
Estagnada
Stack de tecnologia
python
Domínio
api

Direção de pesquisa

Comece reproduzindo a falha com o manifesto composite aninhado mostrado na issue e, em seguida, rastreie a serialização e a decodificação de RunFunctionRequest que relata google.protobuf.message.DecodeError. Compare o tratamento de valores de entrada profundamente aninhados com o caso bem-sucedido de recurso de saída mencionado; considera-se concluído quando uma chamada de função aceita o aninhamento demonstrado sem esse erro de decodificação.

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

Descrição

bug
What happened?

We have composition that generates or consumes values with a high level of nested sub-values. (Those are CRDs that we are using with the Kubernetes Provider)
When going over 30 levels of imbrication the error below is raised

crossplane: error: cannot render composite resource: cannot run pipeline step "blueprint": rpc error: code = Unknown desc = Unexpected <class 'google.protobuf.message.DecodeError'>: Error parsing message with type 'apiextensions.fn.proto.v1.RunFunctionRequest'

How can we reproduce it?
`
apiVersion:  <APIVERSION>
kind: XCOMPO
metadata:
  name: <NAME>
spec:
  debug:
    level0:
      level1:
        level2:
          level3:
            level4:
              level5:
                level6:
                  level7:
                    level8:
                      level9:
                        level10:
                          level11:
                            level12:
                              level13:
                                level14:
                                  level15:
                                    level16:
                                      level17:
                                        level18:
                                          level19:
                                            level20:
                                              level21:
                                                level22:
                                                  level23:
                                                    level24:
                                                      level25:
                                                        level26:
                                                          level27:
                                                            level28:
                                                              level29:

Running ☝ this composite would faild if there is a level30 as child of level29.

Could this be linked to the limits set in Protobuf (https://github.com/protocolbuffers/protobuf/issues/6537) ?

Note: there is no issue when outputing resources with more than 30 levels. (ie: running something like

rsp.desired.resources["toto"].resource.update(resources)

Where resources has more than 30 levels.
It is only when the function is called with too many depth inputs that the exception is raised.

What environment did it happen in?

Function version:
0.6.0

Linguagem predominante
Python
Estrelas
12
Forks
15
Merge médio
1d 12h
PRs com merge (30d)
7

Guia de contribuição

Nenhum guia de contribuição indexado para este repositório

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 crossplane/function-sdk-python

Todas as issues de crossplane/function-sdk-python

Issues semelhantes

Mais issues de Python

Receba novas issues na sua caixa de entrada

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