Spring Boot - No _valueDeserializer assigned

Tenho uma aplicação que tem funcionado bem, mas ultimamente tem apresentado um problema que eu não tenho conseguido entender. A aplicação é com SpringBoot 2.7.

Eu tenho uma entidade Cliente, e um endpoint POST para cadastrar esse cliente. Na maioria do tempo funciona bem, mas depois de um determinado tempo, passa a ocorrer um erro, mas se eu reiniciar o servidor, a mesma requisição passa sem problema.

Segue o erro:

com.fasterxml.jackson.databind.exc.MismatchedInputException: No _valueDeserializer assigned\n at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 15, column: 13] (through reference chain: br.com.attomtech.allanlimarefrigeracao.api.model.Cliente[\"produtos\"]->java.util.ArrayList[0]->br.com.attomtech.allanlimarefrigeracao.api.model.Produto[\"serie\"])

Segue exemplo do body da requisição:

{
	"documento": "123.456.789-00",
	"isPessoaFisica": true,
	"endereco": {
		"cep": "12.345-678",
		"logradouro": "Rua A",
		"bairro": "Bairro B",
		"cidade": "Cidade C",
		"estado": "XX",
		"numero": "99"
	},
	"produtos": [
		{
			"serie": "SE1234",
			"fabricante": "LG",
			"tipo": "ARJANELAINVERTER",
			"modelo": "WE12345",
			"__index": 0
		}
	],
	"nome": "Teste",
	"email": "teste@gmail.com",
	"telefone": "(21) 1234-56789"
}

Entidade Cliente:

@Entity
@Table(name = "cliente")
public class Cliente
{
    public static final String CODIGO    = "codigo",
                               NOME      = "nome",
                               EMAIL     = "email",
                               DOCUMENTO = "documento";
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long codigo;

    @NotBlank(message = "O Nome é obrigatório")
    private String nome;

    @NotBlank(message = "O E-mail é obrigatório")
    @Email(message = "Informe um E-mail válido!")
    private String email;

    @Column(name = "pessoa_fisica")
    private Boolean isPessoaFisica;
    private String  documento;

    @Embedded
    private Endereco endereco;
    
    @Valid @JsonIgnoreProperties("cliente")
    @OneToMany(mappedBy = "cliente", cascade = CascadeType.ALL, orphanRemoval = true)
    private List<Produto> produtos;
    
    private String telefone;

    // getters and setters
}

Entidade Produto:

@Entity
@Table(name = "produto")
public class Produto
{
    public static final String CODIGO     = "codigo",
                               FABRICANTE = "fabricante",
                               TIPO       = "tipo",
                               MODELO     = "modelo",
                               SERIE      = "serie",
                               CLIENTE    = "cliente";
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long codigo;

    @Enumerated(EnumType.STRING)
    private Fabricante fabricante;

    @Enumerated(EnumType.STRING)
    private TipoProduto tipo;

    @NotBlank
    private String modelo;

    @NotBlank
    private String  serie;
    
    @Column(name = "meses_aviso")
    private Integer mesesAviso;
    
    @Column(name = "aviso_habilitado")
    private Boolean avisoHabilitado;
    
    @JsonIgnoreProperties("produtos")
    @ManyToOne
    @JoinColumn(name = "codigo_cliente")
    private Cliente cliente;
    
    @JsonIgnore
    @OneToMany(mappedBy = "produto", fetch = FetchType.LAZY)
    private List<OrdemServico> ordens;

    // getters and setters
}

Alguém tem alguma ideia do que pode ser esse problema?

Posta o código do endpoint POST que está tratando a requisição desse json pra gente ver.

Controller de Clientes:

@RestController
@RequestMapping("/clientes")
public class ClienteResource
{
    // some methods

    @PostMapping @CacheEvict(value = "produtosCliente", key = "#cliente.codigo")
    @PreAuthorize("hasAuthority('ROLE_CADASTRAR_CLIENTE')")
    public ResponseEntity<Cliente> cadastrar( @RequestBody @Valid Cliente cliente )
    {
        if( LOGGER.isDebugEnabled( ) )
            LOGGER.debug( "Processando cadastrar(). Cliente: " + cliente );
        
        Cliente clienteSalvo = service.salvar( cliente );
        
        return ResponseEntity.status( HttpStatus.CREATED ).body( clienteSalvo );
    }

    // some methods
}

O service basicamente pega o objeto cliente e passa para o repositório do SpringJPA para salvar.

Com esse JSON que vc postou que ocorreu o erro? Pq ele parece que está correto e não condiz com o erro apresentado. Muito estranho msm.

Pois é, isso que intriga. Porque com esse mesmo json, em certo momento o erro acontece, aí eu simplesmente desligo e ligo novamente o servidor, e executo o mesmo request, sem alterar nada, e funciona.

Posta a exceção completa pra gente ver. Talvez tenha algo mais lá que ajude a descobrir o que é o problema.

Paulo, você conseguiu achar a solução? Estou com o mesmo problema. Agradeceria muito se pudesse me ajudar.