[macOS] Elasticsearch – Unrecognized VM option ‘UseConcMarkSweepGC’

Sur mon ordinateur de travail, après une mise à jour avec brew update suivi d’un brew upgrade, il m’était devenu impossible de démarrer elasticsearch. L’exécution se terminait systématiquement en erreur avec le message : Unrecognized VM option 'UseConcMarkSweepGC'. Après quelques recherches, voici la solution qui a permis le démarrage du programme sans erreur.

Éditer le fichier /usr/local/etc/elasticsearch/jvm.options et commenter les lignes suivantes :

-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=75
-XX:+UseCMSInitiatingOccupancyOnly

Pour remplacer ces trois lignes, ajouter les lignes suivantes :

8-13:-XX:+UseConcMarkSweepGC
8-13:-XX:CMSInitiatingOccupancyFraction=75
8-13:-XX:+UseCMSInitiatingOccupancyOnly

elasticsearch devrait désormais démarrer correctement.

Installation de sshpass sous macOS

Toujours dans le cadre de l’exécution d’ansible sous macOS, j’ai été confronté à une difficulté supplémentaire: sshpass n’était pas installé. Impossible de se connecter au serveur pour commencer le déploiement. Pas de solution simple du côté de brew, le canal officiel ne l’incluant pas. Retour aux bases donc, avec compilation du programme depuis les sources puis installation.

sshpass est disponible sur sourceforge. Après téléchargement de l’archive de la version 1.06 du programme, il ne reste plus qu’à extraire le code source et procéder à l’installation. Soit les étapes :

tar xvzf sshpass-1.06.tar.gz
cd sshpass-1.06
./configure
make
sudo make install

Source: Ansible OS X Mavericks You Must Install the sshpass Program

Ansible sous macOS: initializeAfterForkError

En exécutant récemment un script ansible, depuis mon ordinateur de travail, un mac (pour disposer simplement d’une base Linux en entreprise), j’ai rencontré l’erreur suivante :

+[__NSPlaceholderDate initialize] may have been in progress in another thread when fork() was called. We cannot safely call it or ignore it in the fork() child process. Crashing instead. Set a breakpoint on objc_initializeAfterForkError to debug.

Après quelques recherches, il suffit d’ajouter la variable d’environnement OBJC_DISABLE_INITIALIZE_FORK_SAFETY à la valeur YES et de relancer le script, pour que celui-ci se termine correctement.

export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES

Source : StackOverflow