ejabberd incompatiblity with p1_yaml library - erlang

I have installed erlang/OTP 17.1 from source & I have installed ejabberd from GitHub. Both have installed successfully. But when i am starting ejabberd server, i am getting the following error in error.log.
2016-01-08 16:13:57.700 [error] <0.100.0> unable to load p1_yaml NIF: {error,{bad_lib,"Library version (2.8) not compatible (with 2.6)."}}
2016-01-08 16:13:57.700 [error] <0.99.0> CRASH REPORT Process <0.99.0> with 0 neighbours exited with reason: {{bad_lib,"Library version (2.8) not compatible (with 2.6)."},{p1_yaml_app,start,[normal,[]]}} in application_master:init/4 line 133
2016-01-08 16:13:57.769 [critical] <0.38.0>#ejabberd:exit_or_halt:133 failed to start application 'p1_yaml': {error,
{{bad_lib,
"Library version (2.8) not compatible (with 2.6)."},
{p1_yaml_app,start,[normal,[]]}}}

You likely have a p1_yaml.so file around that was build with a different version of Erlang runtime than the one you are using.
You should rebuild ejabberd (or just p1_yaml) with the correct Erlang version.

Related

sbt compile error: java.nio.file.FileSystemException: /root: Read-only file system

I am working on a scala project that uses sbt 1.7.1
The project has its external dependencies like the database etc. that run in docker.
I'm not sure what started the issue exactly, but now when I try and go into sbt console I get this error:
[info] [launcher] getting org.scala-sbt sbt 1.7.1 (this may take some time)...
[error] [launcher] java.nio.file.FileSystemException: /root: Read-only file system
[error] [launcher] could not retrieve sbt 1.7.1
Earlier I was able to get into sbt console, but during compilation I got this error:
(I deleted the ~/.sbt folder to start over, that is when I can't even get into sbt console now)
sbt compile
[info] welcome to sbt 1.7.1 (Azul Systems, Inc. Java 11.0.10)
[info] loading settings for project app-backend-build from plugins.sbt ...
[info] loading project definition from /Users/username123/dev/git/project123/app-backend/project
[error] java.nio.file.FileSystemException: /root: Read-only file system
[error] at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:100)
[error] at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
[error] at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:116)
[error] at java.base/sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:389)
[error] at java.base/java.nio.file.Files.createDirectory(Files.java:690)
[error] at java.base/java.nio.file.Files.createAndCheckIsDirectory(Files.java:797)
[error] at java.base/java.nio.file.Files.createDirectories(Files.java:783)
[error] at lmcoursier.internal.shaded.coursier.paths.Util.createDirectories(Util.java:81)
[error] at lmcoursier.internal.shaded.coursier.paths.CachePath.withStructureLock(CachePath.java:140)
[error] at lmcoursier.internal.shaded.coursier.cache.CacheLocks$.withStructureLock(CacheLocks.scala:20)
[error] at lmcoursier.internal.shaded.coursier.cache.CacheLocks$.withLockOr(CacheLocks.scala:37)
[error] at lmcoursier.internal.shaded.coursier.cache.internal.Downloader$Blocking$.remote(Downloader.scala:408)
[error] at lmcoursier.internal.shaded.coursier.cache.internal.Downloader.$anonfun$remote$5(Downloader.scala:510)
[error] at scala.concurrent.Future$.$anonfun$apply$1(Future.scala:659)
[error] at scala.util.Success.$anonfun$map$1(Try.scala:255)
[error] at scala.util.Success.map(Try.scala:213)
[error] at scala.concurrent.Future.$anonfun$map$1(Future.scala:292)
[error] at scala.concurrent.impl.Promise.liftedTree1$1(Promise.scala:33)
[error] at scala.concurrent.impl.Promise.$anonfun$transform$1(Promise.scala:33)
[error] at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:64)
[error] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
[error] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
[error] at java.base/java.lang.Thread.run(Thread.java:834)
[error] (update) java.nio.file.FileSystemException: /root: Read-only file system
[warn] Project loading failed: (r)etry, (q)uit, (l)ast, or (i)gnore? (default: r)
If I go into a different folder, and try and create a new sbt project I get the same error:
sbt new scala/scala-seed.g8
I am using sdkman for my sbt installation, I deleted the .sbt folder and uninstalled sbt 1.7.1 and then re-installed it...that didn't help.
It seems as though some process has locked something related to sbt or coursier cache?
My project does have multiple modules, i'm not sure what root means in the error message.. the root project or some root folder that coursier might be using?
My sbt project was running fine earlier today, and now I cannot do anything related to scala on my system that uses sbt.
My system is running OSX, 13.0.1 (22A400).
Java home: ~/.jabba/jdk/zulu#1.11.0/Contents/Home
I just tried deleting the coursier cache and no change:
rm -Rf ~/Library/Caches/Coursier
That sbt console would run and compile the project.

How to fix springboot error Failed to retrieve RMIServer stub: javax.naming.CommunicationException error during JRMP connection establishment

I am having issue with springboot maven project and cassandra in docker.
I want to execute mvn verify and in pre-integration-test to start cassandra docker and api server, execute test and then in post-integration-test to stop server but I am facing error Could not contact Spring Boot application: Failed to retrieve RMIServer stub: javax.naming.CommunicationException [Root exception is java.rmi.ConnectIOException: error during JRMP connection establishment;
I have created github repo so you can easily reproduce error.
Steps to reproduce:
git clone https://github.com/gandra/docker-cassandra-with-initial-seed.git
cd docker-cassandra-with-initial-seed
mvn verify
this will produce error like this:
[INFO]
[INFO] --- spring-boot-maven-plugin:2.2.2.RELEASE:start (api-server-start) # docker-cassandra-with-initial-seed ---
[INFO] Attaching agents: []
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 18.501 s
[INFO] Finished at: 2021-01-21T18:39:05+01:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:2.2.2.RELEASE:start (api-server-start) on project docker-cassandra-with-initial-seed: Could not contact Spring Boot application: Failed to retrieve RMIServer stub: javax.naming.CommunicationException [Root exception is java.rmi.ConnectIOException: error during JRMP connection establishment; nested exception is:
[ERROR] java.io.EOFException]
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
Any idea how to fix.
p.s.
I am working on mac and this solution would work on mac and linux as well.
Code https://github.com/gandra/docker-cassandra-with-initial-seed is fixed and now working.
Basically 2 thing are changed:
Removed port mapping 9001 from docker-cassandra.sh.
Added sleep 20 seconds in cassandra_start function in docker-cassandra.sh in order to give time cassandra to properly boot up. Not nice but at least working.
Now followiung code should work with 1 integration test executing successfully:
git clone https://github.com/gandra/docker-cassandra-with-initial-seed.git
cd docker-cassandra-with-initial-seed
mvn verify
If you are using Windows, there was an issue solved in 2020 that is a little bit tricky to find (here the complete thread on Github if you want to read the full story).
Just to recap, the solution is to fix the jmxPort. For example:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<jmxPort>9011</jmxPort>
</configuration>
[...]
The problem here is that he tries to use a port that is already in use.
I had a similar problem with spring boot (not with cassandra).
Two ways i see to solving this:
First way:
Find the program that is using that port (in my case it was "Intel(R) Graphics Command Center" on port 9001). (you can use netstat /a /b in command prompt) or use tcpview (external free program)
disable the program
Profit
Second way
configuring the jmx port in your pom on the spring-boot-maven-plugin
(Answer from sixro)
BUT, i don't like this way because you basically force the others in your project to use your workaround, while the issue is on your machien.

UE4 19.2, Packaging Unknown Error for Windows

sorry for taking your time, I'm having trouble packaging my game for Windows with.
It didn't work with Visual Studio 2017 and neither with 2015.
Problematic part of my Output Log: (The bold lines are Errors, and the others are Messages)
UATHelper: Packaging (Windows (64-bit)): LINK : fatal error LNK1104: cannot open file 'X:\MyGame\Binaries\Win64\MyGame.exe'
UATHelper: Packaging (Windows (64-bit)): ERROR: UBT ERROR: Failed to produce item: X:\MyGame\Binaries\Win64\MyGame.pdb
PackagingResults: Error: UBT ERROR: Failed to produce item: X:\MyGame\Binaries\Win64\MyGame.pdb
UATHelper: Packaging (Windows (64-bit)): Total build time: 26.35 seconds (Local executor: 0.00 seconds)
UATHelper: Packaging (Windows (64-bit)): Took 26.7634315s to run UnrealBuildTool.exe, ExitCode=5
UATHelper: Packaging (Windows (64-bit)): ERROR: Command failed (Result:5): C:\Program Files\Epic Games\UE_4.19\Engine\Binaries\DotNET\UnrealBuildTool.exe MyGame Win64 Development -Project=X:\MyGame\MyGame.uproject X:\MyGame\MyGame.uproject -NoUBTMakefiles -remoteini="X:\MyGame" -skipdeploy -noxge -NoHotReload -ignorejunk. See
logfile for details: 'UnrealBuildTool-2018.11.28-15.33.44.txt'
UATHelper: Packaging (Windows (64-bit)): (see C:\Users\MyPC\AppData\Roaming\Unreal Engine\AutomationTool\Logs\C+Program+Files+Epic+Games+UE_4.19\UAT_Log.txt for full exception trace)
PackagingResults: Error: Command failed (Result:5): C:\Program Files\Epic Games\UE_4.19\Engine\Binaries\DotNET\UnrealBuildTool.exe MyGame Win64 Development -Project=X:\MyGame\MyGame.uproject X:\MyGame\MyGame.uproject -NoUBTMakefiles -remoteini="X:\MyGame" -skipdeploy -noxge -NoHotReload -ignorejunk. See logfile for details: 'U
nrealBuildTool-2018.11.28-15.33.44.txt'
UATHelper: Packaging (Windows (64-bit)): AutomationTool exiting with ExitCode=5 (5)
UATHelper: Packaging (Windows (64-bit)): BUILD FAILED
PackagingResults: Error: Unknown Error
LogSlate: Window 'Output Log' being destroyed
I would really appreciate your help.
Thank you very much.
Don't actually know anything about Unreal yet, but it looks like you have your Project Path defined twice behind the -project=<Project Path>.uproject option.

sdk grails and lazybones init fatal error

I can't use grail and lazybones installed via sdkman.
I have got fatal errors.
OS: Ubuntu 16.04
$ java -version
openjdk version "9-internal"
OpenJDK Runtime Environment (build 9-internal+0-2016-04-14-195246.buildd.src)
OpenJDK 64-Bit Server VM (build 9-internal+0-2016-04-14-195246.buildd.src, mixed mode)
$ sdk version
SDKMAN 5.7.2+323
$ sdk install grails
$ grails -version
| Grails Version: 3.3.8
| Groovy Version: 2.4.15
| JVM Version: 9-internal
$ sdk install lazybones
$ lazybones -version
Lazybones version 0.8.3
$ grails create-app --stacktrace helloworld
Resolving dependencies..
| Error Error occurred running Grails CLI: Received fatal alert: handshake_failure (NOTE: Stack trace has been filtered. Use --verbose to see entire trace.)
javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:436)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180)
at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:294)
at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:643)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:479)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)
at org.apache.http.impl.client.DecompressingHttpClient.execute(DecompressingHttpClient.java:137)
at org.eclipse.aether.transport.http.HttpTransporter.execute(HttpTransporter.java:287)
at org.eclipse.aether.transport.http.HttpTransporter.implGet(HttpTransporter.java:243)
at org.eclipse.aether.spi.connector.transport.AbstractTransporter.get(AbstractTransporter.java:59)
at org.eclipse.aether.connector.basic.BasicRepositoryConnector$GetTaskRunner.runTask(BasicRepositoryConnector.java:447)
at org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run(BasicRepositoryConnector.java:350)
at org.eclipse.aether.util.concurrency.RunnableErrorForwarder$1.run(RunnableErrorForwarder.java:67)
at org.eclipse.aether.connector.basic.BasicRepositoryConnector$DirectExecutor.execute(BasicRepositoryConnector.java:581)
at org.eclipse.aether.connector.basic.BasicRepositoryConnector.get(BasicRepositoryConnector.java:249)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads(DefaultArtifactResolver.java:520)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:421)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:246)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:223)
at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:320)
at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor(DefaultArtifactDescriptorReader.java:217)
at org.eclipse.aether.internal.impl.DefaultDependencyCollector.resolveCachedArtifactDescriptor(DefaultDependencyCollector.java:535)
at org.eclipse.aether.internal.impl.DefaultDependencyCollector.getArtifactDescriptorResult(DefaultDependencyCollector.java:519)
at org.eclipse.aether.internal.impl.DefaultDependencyCollector.processDependency(DefaultDependencyCollector.java:409)
at org.eclipse.aether.internal.impl.DefaultDependencyCollector.processDependency(DefaultDependencyCollector.java:363)
at org.eclipse.aether.internal.impl.DefaultDependencyCollector.process(DefaultDependencyCollector.java:351)
at org.eclipse.aether.internal.impl.DefaultDependencyCollector.collectDependencies(DefaultDependencyCollector.java:254)
at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveDependencies(DefaultRepositorySystem.java:341)
at org.springframework.boot.cli.compiler.grape.AetherGrapeEngine.resolve(AetherGrapeEngine.java:318)
at org.springframework.boot.cli.compiler.grape.AetherGrapeEngine.resolve(AetherGrapeEngine.java:300)
at org.springframework.boot.cli.compiler.grape.AetherGrapeEngine.resolve(AetherGrapeEngine.java:292)
at org.grails.cli.boot.GrailsDependencyVersions.<init>(GrailsDependencyVersions.groovy:54)
at org.grails.cli.boot.GrailsDependencyVersions.<init>(GrailsDependencyVersions.groovy:50)
at org.grails.cli.profile.repository.MavenProfileRepository.<init>(MavenProfileRepository.groovy:53)
at org.grails.cli.GrailsCli.createMavenProfileRepository(GrailsCli.groovy:334)
at org.grails.cli.GrailsCli.execute(GrailsCli.groovy:235)
at org.grails.cli.GrailsCli.main(GrailsCli.groovy:159)
| Error Error occurred running Grails CLI: Received fatal alert: handshake_failure
$ lazybones list
Can't connect to pledbrook/lazybones-templates: Unable to make member of class sun.net.www.protocol.https.HttpsURLConnectionImpl accessible: module java.base does not export sun.net.www.protocol.https to unnamed module #75f65e45
To me that looks like an SSL handshake error when grails is doing some of its initialisation work for create app. It might be attempting to pull down some required jar files etc.
What does sdk list grails show?
What does which grails and which javareturn?
I've not used jdk 9 heaps so might be worthwhile investigating changing that also. I think you'll find switching to jdk8 will have better results. Each jdk comes with a list of standard root certificate authorities it trusts.
Maybe with the recent security issues like the one surrounding the Symantec CAs jdk9 might have removed these but the server grails is connecting to is still using one perhaps.
Edit: I think you may also have been using an internal development build version of Java 9 jdk. as you reported to using build 9-internal+0-2016-04-14-195246.buildd
Try using jdk 8 or installing a newer version of Java 9.

Erlang version 18.0 and ejabberd nodename conflict

I wanted to install latest ejabberd from https://github.com/processone/ejabberd. For this, Erlang/OTP 18 is required. That too, i have manually installed from https://github.com/erlang/otp. Then, i need to start ejabberd server with command ejabberdctl start. But there is some error in that.
My mnesia node name is akash#akash-Latitude-3450 and ejabberd nodename is akash#localhost. Due to this, server is not getting started. How to resolve this conflict ?
Log ->
2016-01-07 18:38:20.410 [critical] <0.39.0>#ejabberd_app:db_init:125 Node name mismatch: I'm [ejabberd#localhost], the database is owned by ['ejabberd#akash-Latitude-3450']
2016-01-07 18:38:20.410 [critical] <0.39.0>#ejabberd_app:db_init:127 Either set ERLANG_NODE in ejabberdctl.cfg or change node name in Mnesia
2016-01-07 18:38:20.410 [error] <0.38.0> CRASH REPORT Process <0.38.0> with 0 neighbours exited with reason: node_name_mismatch in ejabberd_app:db_init/0 line 129 in application_master:init/4 line 134
You have two options:
name your Erlang node with the name matching your Mnesia database when you start ejabberd. As suggested by error message, it can be changed in var ERLANG_NODE in ejabberdctl.cfg.
Backup Mnesia database by starting the node under old name, do a fresh install and restore your data with node started with the new name.

Resources