[Readme] Error when "readme" folder exists besides README.md

I got an error message in a repo that had a folder named “readme”. Renaming that folder to “docs” solved the issue.

Thanks for the hint! We will fix this in a moment.

You can update the readme plugin to version 2.0.2. This should fix the error.

Many thanks for the quick reply and the fix. Unfortunately, updating the plugin somehow crashed my installation so the service won’t start. How can I fix this?

Here’s the scm-server.err.log:

2022-01-06 10:58:02.129:INFO::main: Logging initialized @1280ms to org.eclipse.jetty.util.log.StdErrLog
2022-01-06 10:58:03.285:WARN:oejw.WebAppContext:main: EXCEPTION 
java.io.IOException: Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch
	at java.base/java.io.WinNTFileSystem.canonicalize0(Native Method)
	at java.base/java.io.WinNTFileSystem.canonicalize(WinNTFileSystem.java:438)
	at java.base/java.io.File.getCanonicalPath(File.java:626)
	at org.eclipse.jetty.webapp.WebAppContext.setTempDirectory(WebAppContext.java:1281)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.invokeMethod(XmlConfiguration.java:765)
	at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.set(XmlConfiguration.java:728)
	at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:509)
	at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.newObj(XmlConfiguration.java:1022)
	at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:521)
	at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:431)
	at org.eclipse.jetty.xml.XmlConfiguration.configure(XmlConfiguration.java:364)
	at sonia.scm.server.ScmServer.<init>(ScmServer.java:70)
	at sonia.scm.server.ScmServerDaemon.<clinit>(ScmServerDaemon.java:41)
2022-01-06 10:58:03.301:WARN:oejx.XmlConfiguration:main: Config error at <Set name="baseResource">|???<New class="org.eclipse.jetty.util.resource.ResourceCollection"><Arg>|?????<Array type="java.lang.String"><Item>|???????<SystemProperty name="basedir" default="."/>|???????/webapp/docroot|??????</Item></Array>|????</Arg></New>|??</Set> java.lang.reflect.InvocationTargetException in file:///C:/SCM-Manager2/scm-server/conf/server-config.xml
2022-01-06 10:58:03.301:WARN:oejx.XmlConfiguration:main: Config error at <New id="docroot" class="org.eclipse.jetty.webapp.WebAppContext"><Set name="contextPath">/</Set><Set name="baseResource">|???<New class="org.eclipse.jetty.util.resource.ResourceCollection"><Arg>|?????<Array type="java.lang.String"><Item>|???????<SystemProperty name="basedir" default="."/>|???????/webapp/docroot|??????</Item></Array>|????</Arg></New>|??</Set><Set name="tempDirectory">|???<SystemProperty name="basedir" default="."/>|???/work/docroot|??</Set></New> java.lang.reflect.InvocationTargetException in file:///C:/SCM-Manager2/scm-server/conf/server-config.xml
Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: sonia.scm.server.ScmServerException: error during server configuration
	at sonia.scm.server.ScmServer.<init>(ScmServer.java:74)
	at sonia.scm.server.ScmServerDaemon.<clinit>(ScmServerDaemon.java:41)
Caused by: java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
	at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.invokeConstructor(XmlConfiguration.java:752)
	at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.construct(XmlConfiguration.java:1039)
	at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.newObj(XmlConfiguration.java:1011)
	at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.itemValue(XmlConfiguration.java:1540)
	at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.value(XmlConfiguration.java:1441)
	at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.set(XmlConfiguration.java:571)
	at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:509)
	at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.newObj(XmlConfiguration.java:1022)
	at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:521)
	at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:431)
	at org.eclipse.jetty.xml.XmlConfiguration.configure(XmlConfiguration.java:364)
	at sonia.scm.server.ScmServer.<init>(ScmServer.java:70)
	... 1 more
Caused by: java.nio.file.InvalidPathException: Illegal char <
> at index 1: .
							/webapp/docroot
	at java.base/sun.nio.fs.WindowsPathParser.normalize(WindowsPathParser.java:182)
	at java.base/sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:153)
	at java.base/sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:77)
	at java.base/sun.nio.fs.WindowsPath.parse(WindowsPath.java:92)
	at java.base/sun.nio.fs.WindowsFileSystem.getPath(WindowsFileSystem.java:229)
	at java.base/java.nio.file.Path.of(Path.java:147)
	at java.base/java.nio.file.Paths.get(Paths.java:69)
	at org.eclipse.jetty.util.resource.Resource.newResource(Resource.java:179)
	at org.eclipse.jetty.util.resource.Resource.newResource(Resource.java:152)
	at org.eclipse.jetty.util.resource.ResourceCollection.<init>(ResourceCollection.java:110)
	... 17 more

Hello @fralf,

it should have nothing to do with the new plugin. It looks like you changed your server-config.xml and broke it somehow? It seems like a “>” somewhere breaks your xml.

The plugin installation triggered a server restart, and because of this configuration error, your server can’t start properly.

Hope this helps.
Eduard

Thanks for the quick reply and the pointer! I will check the XML and report back.

Best regards,
Frank

The server-config.xml is fine. It was last changed two days ago and worked until this morning before the plugin update.

I checked with sc from the command line and found that the service gets stuck with state START_PENDING. Even deleting and re-installing the service didn’t work. Can a failed re-start attempt of SCM Manager could have caused this? How can I check?

There was a change to C:\SCM-Manager_HOME\config\myevents.xml during the update and there is a new file C:\SCM-Manager_HOME\plugins\scm-readme-plugin.smp.

Best regards,
Frank

SERVICE_NAME: scm-server-2-28-0
        TYPE               : 10  WIN32_OWN_PROCESS
        STATE              : 2  START_PENDING
                                (NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)

That’s awkward. The stacktrace is pretty clear about this .
java.lang.reflect.InvocationTargetException in file:///C:/SCM-Manager2/scm-server/conf/server-config.xml
We assume you have too many line breaks inside your server config.

Please be sure your server-config.xml contains a part that looks exactly like this:

    <Set name="tempDirectory">
      <SystemProperty name="basedir" default="."/>/work/docroot
    </Set>

Here is the link to the original server-config.xml. The changes in this configuration are only applied after a restart of the server.

Hi Eduard,

Thanks for the pointer, that did the trick. I must have triggered the pretty print feature of my XML editor which added a line break before all the paths. Now SCM Manager is back.

Thanks again for your kind help!
Frank