24 novembre 2021

eDSN, evMedia - "Bad history file syntax!" ou "MalformedInputException: Input length = 1"

Un upgrade eDSN ou evMedia peut entrainer une mise à jour de la version du Karaf embarqué. A cette occasion le fichier contenant l'historique des commandes peut avoir changé de format et l'ancien fichier être considéré comme illisible. Dans le pire des cas cela provoque un blocage de l'accès aux sessions SSH ...


En cas de présence de ce message le edsn.log, la console SSH est accessible

2021-11-24T09:56:28,514 | INFO  | 4)-nio2-thread-1 | ServerSessionImpl                | Session edsn@/127.0.0.1:46726 authenticated
2021-11-24T09:56:28,750 | WARN  | onsole user edsn | jline                            | Failed to load history
java.lang.IllegalArgumentException: Bad history file syntax! The history file `/home/adm/hr9re1/.karaf/karaf.history` may be an older history: please remove it or use a different history file.
        at org.jline.reader.impl.history.DefaultHistory.addHistoryLine(DefaultHistory.java:185) ~[!/:?]
        at org.jline.reader.impl.history.DefaultHistory.addHistoryLine(DefaultHistory.java:169) ~[!/:?]
        at org.jline.reader.impl.history.DefaultHistory.lambda$load$0(DefaultHistory.java:86) ~[!/:?]


Il suffit de se connecter à la console et de réinitialiser l'historique par la commande ssh suivante :

edsn> shell:history --clear


Le cas d'erreur suivant est plus gênant puisque le client SSH est alors inaccessible :

Au lancement du client eDSN par exemple :

edsn>

Error executing command: java.nio.charset.MalformedInputException: Input length = 1

 

Dans edsn.log

2021-11-15T11:21:26,946 | ERROR | onsole user edsn | ShellUtil                        | Exception caught while executing command

java.io.UncheckedIOException: java.nio.charset.MalformedInputException: Input length = 1

        at java.io.BufferedReader$1.hasNext(BufferedReader.java:577) ~[?:?]

        at java.util.Iterator.forEachRemaining(Iterator.java:132) ~[?:?]

La solution est alors de réinitialiser l'historique des commandes Karaf en détruisant le fichier. 

Dans notre cas : 

rm -f ~/.karaf/karaf.history