[comment]: # ({e2a50fb4-d272fe28})
# Problemi di aggiornamento

[comment]: # ({/e2a50fb4-d272fe28})

[comment]: # ({e7544afd-57e8421f})
## Relativo all'escaping

[comment]: # ({/e7544afd-57e8421f})

[comment]: # ({bf624b11-ed744508})
#### Superato il limite di caratteri per i parametri delle funzioni dopo l'aggiornamento

In Zabbix 7.0 è stato aggiunto l'escaping corretto delle barre rovesciate nei parametri stringa delle funzioni dello storico.

Poiché durante l'aggiornamento dalle versioni di Zabbix precedenti alla 7.0 vengono aggiunte barre rovesciate supplementari, i parametri diventano più lunghi e questo può causare il malfunzionamento delle funzioni dei trigger se la lunghezza del parametro supera la dimensione massima dei dati di 255 caratteri.

Per illustrare quali problemi possono sorgere durante l'aggiornamento del database, quale sia il loro impatto e come riconoscerli e risolverli, prendiamo come esempio una configurazione con 3 item e 2 trigger.

[comment]: # ({/bf624b11-ed744508})

[comment]: # ({0ddcf64d-574618a7})
##### Configurazione

1. Versione Zabbix 6.0.

2. File `/tmp/ONE` che contiene 114 barre rovesciate con una 'a' alla fine:

```bash
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\a
```
3. Un item `vfs.file.contents[/tmp/ONE]` per leggere /tmp/ONE.

4. Due item calcolati:

**Calc_228** - il suo parametro contiene 228 barre rovesciate nel parametro, che sono precedute da escape, quindi **corrispondono** alle 114 barre rovesciate del file /tmp/ONE:

```bash
find(/Zabbix server/vfs.file.contents[/tmp/ONE],1m:now,"regexp","\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\a")
```

**Calc_232** - il suo parametro contiene 232 barre rovesciate nel parametro, che sono precedute da escape, quindi **non corrispondono** alle 114 barre rovesciate del file /tmp/ONE, poiché richiedono almeno 116 barre rovesciate reali:

```bash
find(/Zabbix server/vfs.file.contents[/tmp/ONE],1m:now,"regexp","\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\a")
```

5. Due trigger:

**Trig_228** - analogamente a Calc_228, il suo parametro contiene 228 barre rovesciate per **corrispondere** a 114 barre rovesciate reali del file /tmp/ONE:

```bash
find(/Zabbix server/vfs.file.contents[/tmp/ONE],1m:now,"regexp","\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\a")
```

**Trig_232** - analogamente a Calc_232, il suo parametro contiene 232 barre rovesciate per corrispondere a 116 barre rovesciate reali, quindi **non corrisponde** alle 114 barre rovesciate del file /tmp/ONE:

```bash
find(/Zabbix server/vfs.file.contents[/tmp/ONE],1h:now,"regexp","\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\a")
```

6. Calc_228 restituisce 1 e Trig_228 **si attiva**.

7. Calc_232 restituisce 0 e Trig_232 **non si attiva**.

[comment]: # ({/0ddcf64d-574618a7})

[comment]: # ({faa07286-8687eae0})
##### Aggiornamento

1. Eseguire l'aggiornamento alla versione 8.0.0 e controllare nei log il seguente avviso:

```bash
2485502:20250228:115442.236 DBpatch_6050165(): impossibile salvare nel DB il parametro della funzione: la dimensione risultante 477 è maggiore del massimo consentito di 255.
functionid:33792 function:'find'
utilizzata sul host: 'Zabbix server'
  nel trigger: 'TRIG_228'.
Valore corrente del parametro:
'$,1m:now,"regexp","\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\a"'
Il valore con escape risultante sarebbe:
'$,1m:now,"regexp","\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\a"
L'aggiornamento del DB e Zabbix server possono continuare a essere eseguiti, ma per assicurarsi che questa funzione operi correttamente
È RICHIESTO UN INTERVENTO MANUALE !
È necessario ridurre manualmente la dimensione di questo parametro usando una macro come soluzione alternativa.

2485502:20250228:115442.237 DBpatch_6050165(): impossibile salvare nel DB il parametro della funzione: la dimensione risultante 485 è maggiore del massimo consentito di 255.
functionid:33795 function:'find'
utilizzata sul host: 'Zabbix server'
  nel trigger: 'TRIG_232'.
Valore corrente del parametro:
'$,1m:now,"regexp","\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\a"'
Il valore con escape risultante sarebbe:
'$,1m:now,"regexp","\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\a"
L'aggiornamento del DB e Zabbix server possono continuare a essere eseguiti, ma per assicurarsi che questa funzione operi correttamente
È RICHIESTO UN INTERVENTO MANUALE !
È necessario ridurre manualmente la dimensione di questo parametro usando una macro come soluzione alternativa.
```

2. L'aggiornamento del database **termina** e Zabbix server continua a essere eseguito.

3. Calc_228 restituisce ancora 1, mentre Calc_232 restituisce 0.

4. I trigger sono stati aggiornati come segue:

**Trig_228**:

```bash
find(/Zabbix server/vfs.file.contents[/tmp/ONE],1m:now,"regexp","\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\a")
```

**Trig_232**:

```bash
find(/Zabbix server/vfs.file.contents[/tmp/ONE],1m:now,"regexp","\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\a")
```

Entrambi i trigger, Trig_228 e Trig_232, **ora si attivano**! Questo è inatteso, quindi è richiesto un intervento manuale.

[comment]: # ({/faa07286-8687eae0})

[comment]: # ({66c3ceb9-0eda1446})
##### Intervento manuale

Le espressioni dei trigger devono essere aggiornate in modo che i backslash siano sottoposti a escape, tuttavia ciò non può essere fatto perché
i parametri risultanti sarebbero troppo lunghi.

Per questo motivo è necessario aggiungere le macro:

**{$228_BACKSLASHES_A}**:

```bash
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\a
```

**{$232_BACKSLASHES_A}**:

```bash
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\a
```

e **aggiornare** le espressioni dei trigger in modo che le utilizzino:

**Trig_228**:

```bash
find(/Zabbix server/vfs.file.contents[/tmp/ONE],1m:now,"regexp",{$228_BACKSLASHES_A})
```

**Trig_232**:

```bash
find(/Zabbix server/vfs.file.contents[/tmp/ONE],1m:now,"regexp",{$232_BACKSLASHES_A})
```

Ora entrambi i trigger funzionano come prima: solo Trig_228 **si attiva**.

Non ci sono problemi con gli item calcolati, ma anche questi potrebbero essere aggiornati per coerenza:

**Calc_228**:

```bash
find(/Zabbix server/vfs.file.contents[/tmp/ONE],1m:now,"regexp",{$228_BACKSLASHES_A})
```

**Calc_232**:

```bash
find(/Zabbix server/vfs.file.contents[/tmp/ONE],1m:now,"regexp",{$232_BACKSLASHES_A})
```

[comment]: # ({/66c3ceb9-0eda1446})
