chap-troubleshooting.xml revision 7d19a158b53f47b175ba1e6aad07c79365847ae6
<?xml version="1.0" encoding="UTF-8"?>
<!--
! CCPL HEADER START
!
! This work is licensed under the Creative Commons
! Attribution-NonCommercial-NoDerivs 3.0 Unported License.
! To view a copy of this license, visit
! http://creativecommons.org/licenses/by-nc-nd/3.0/
! or send a letter to Creative Commons, 444 Castro Street,
! Suite 900, Mountain View, California, 94041, USA.
!
! You can also obtain a copy of the license at
! legal/CC-BY-NC-ND.txt.
! See the License for the specific language governing permissions
! and limitations under the License.
!
! If applicable, add the following below this CCPL HEADER, with the fields
! enclosed by brackets "[]" replaced with your own identifying information:
! Portions Copyright [yyyy] [name of copyright owner]
!
! CCPL HEADER END
!
! Copyright 2011-2012 ForgeRock AS
!
-->
<chapter xml:id='chap-troubleshooting'
xmlns='http://docbook.org/ns/docbook'
version='5.0' xml:lang='en'
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xsi:schemaLocation='http://docbook.org/ns/docbook http://docbook.org/xml/5.0/xsd/docbook.xsd'
xmlns:xlink='http://www.w3.org/1999/xlink'
xmlns:xinclude='http://www.w3.org/2001/XInclude'>
<title>Troubleshooting</title>
<para>When things are not working check this chapter for tips and answers.</para>
<section>
<title>Internal Server Error during recon or sync</title>
<para>
Error message returned form recon or syn
</para>
<para>
{"error":"Conflict","description":"Internal Server Error: org.forgerock.openidm.sync.SynchronizationException: Cowardly refusing to perform reconciliation with an empty source object set: Cowardly refusing to perform reconciliation with an empty source object set"}
</para>
<para>
This error can be misleading. This usually means the connector
is not able to communicate with the target source.
Check the settings for your connector. For example in the xml connector you get this error
if the filename for the source is invalid. Or in the LDAP connector if your connector
cannot contact the target LDAP server.
</para>
</section>
<section>
<title>scr list shows sync service unsatisfied</title>
<para>
Looking at the console output of the logs in <filename>openidm/logs</filename> you see the following:
</para>
<para>
<literal>WARNING: Loading configuration file /Users/jamie/ws/idm/openidm-zip/target/openidm/conf/sync.json failed
org.forgerock.openidm.config.InvalidException: Configuration for org.forgerock.openidm.sync could not be parsed and may not be valid JSON : Unexpected character ('}' (code 125)): expected a value
at [Source: java.io.StringReader@3951f910; line: 24, column: 6]
at org.forgerock.openidm.config.crypto.ConfigCrypto.parse(ConfigCrypto.java:249)
at org.forgerock.openidm.config.crypto.ConfigCrypto.encrypt(ConfigCrypto.java:165)
at org.forgerock.openidm.config.installer.JSONConfigInstaller.setConfig(JSONConfigInstaller.java:340)</literal>
</para>
<para>
You have a syntax error in your <filename>openidm/conf/sync.json</filename>.
After fixing your configuration, use <filename>openidm/cli.sh</filename>
with the <command>validate</command> command to check that your configuration
files are valid.
</para>
<screen>$ sh cli.sh validate
Using boot properties at /path/to/openidm/conf/boot/boot.properties
...................................................................
[Validating] Load JSON configuration files from:
[Validating] /path/to/openidm/conf
[Validating] audit.json .................................. SUCCESS
[Validating] authentication.json ......................... SUCCESS
[Validating] managed.json ................................ SUCCESS
[Validating] provisioner.openicf-xml.json ................ SUCCESS
[Validating] repo.orientdb.json .......................... SUCCESS
[Validating] router.json ................................. SUCCESS
[Validating] scheduler-reconcile_systemXmlAccounts_managedUser.json SUCCESS
[Validating] sync.json ................................... SUCCESS</screen>
</section>
<section>
<title>Json Parsing Error</title>
<para>
During startup of openidm there might be some errors like:
</para>
<screen width="100">
"Configuration for org.forgerock.openidm.provisioner.openicf could not be parsed
and may not be valid JSON : Unexpected character ('}' (code 125)):
was expecting double-quote to start field name"
</screen>
<para>
The error message usually points precisely to the point where the json file has the syntax problem. The error above was caused by a excess comma in the json file:
<screen>{"attributeName":{},{},}</screen>
The second comma is too much!
</para>
<para>
The situation usually results in the service the config-json belongs to is left in the "unsatisfied" state.
</para>
<para>You can use <filename>openidm/cli.sh</filename> with the
<command>validate</command> command to check that your configuration files
are valid.</para>
</section>
<section>
<title>System Not available</title>
<para>
The following error is thrown as a result of a reconciliation where the source systems configuration can not be found:
</para>
<screen width="100">
{"error":"Conflict","description":"Internal Server Error:
org.forgerock.openidm.sync.SynchronizationException:
org.forgerock.openidm.objset.ObjectSetException:
System: system/HR/account is not available.:
org.forgerock.openidm.objset.ObjectSetException: System:
system/HR/account is not available.:
System: system/HR/account is not available."}
</screen>
<para>
For provoking the error above the name of the resource, as defined in the "name" property of the provisioner.xxx.json was changed form HR to something different.
</para>
<para>
The same error can also be the result of a not loaded provisioner config, for instance due to a misconfiguration; an example would be a wrong path to the data file of a csv connector.
</para>
</section>
<section>
<title>Bad Connector Host Reference in Provisioner Configuration</title>
<para>
An error upon loading a provisioner configuration might look like this:
</para>
<screen width="100">
Wait for meta data for config org.forgerock.openidm.provisioner.openicf-scriptedsql
</screen>
<para>
In this case the configuration is not loaded because some information is missing. One possible cause is a wrong value for "connectorHostRef" in the provisioner json. There rule is here (for local java connector servers):
</para>
<para>
If the connector jar is installed as a bundle (i.e. under <filename>openidm/bundle</filename>), then the value must be:
<screen width="100">"connectorHostRef" : "osgi:service/org.forgerock.openicf.framework.api.osgi.ConnectorManager",</screen>
If installed as connector (i.e. under <filename>openidm/connectors</filename>) then the value must be like:
<screen width="100">"connectorHostRef" : "#LOCAL",</screen>
</para>
</section>
</chapter>