Table of Contents | ||||
---|---|---|---|---|
|
Why I can see some DB workload even when Syncope is idle?
...
I get the error "WorkflowException: ... No outgoing sequence flow..." when updating an user
This When the Activiti workflow adapter is enabled, this means that the given user has a workflow state for which no update is allowed.
Such constraints are contained in the default worklfow XML definition that can be extended an customized through the administration If you want instead to allow such transitions, you will need to update the workflow definition accordingl, through the admin console.
I get the error "An error occurred while registering a ClassTransformer with PersistenceUnitInfo..." during startup
...
This barely means that 2 minutes are not enough for setting up everything on the given hardware: you can configure this timeout by changing, in console/pom.xml
:
Code Block |
---|
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<inherited>true</inherited>
<configuration>
<container>
|
to
Code Block |
---|
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<inherited>true</inherited>
<configuration>
<container>
<timeout>180000</timeout>
|
...
Sync / Pull Task Execution
...
report
...
not generated
...
when
...
large number of users
...
(e.g. 1000+)
...
exist in MySQL
We can track the cause if we see errors in the core.log
as follows:
Code Block |
---|
Caused by: org.apache.openjpa.lib.jdbc.ReportingSQLException: Data truncation: Data too long for column 'message' at row 1 {prepstmnt 1398507577 INSERT INTO TaskExec (id, endDate, message, startDate, status, TASK_ID) VALUES (?, ?, ?, ?, ?, ?)} [code=1406, state=22001]
|
The root cause of such trouble is the JPA annotation @Lob
(without any modifier) which becomes "TEXT
" column type in MySQL.
However, MySQL features some more textual type variants, so if change when changing the message
column definition in the TaskExec
table message filed via SQL from TEXT
to MEDIUMTEXT
or LONGTEXT
and then restart Syncope, permitting OpenJPA to update get the change, you will overcome this limitation issue.
For example:
Code Block |
---|
mysql> describe TaskExec;
+-----------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+-------+
| id | bigint(20) | NO | PRI | NULL | |
| endDate | datetime | YES | | NULL | |
| message | text | YES | | NULL | |
| startDate | datetime | YES | | NULL | |
| status | varchar(255) | NO | | NULL | |
| TASK_ID | bigint(20) | YES | MUL | NULL | |
+-----------+--------------+------+-----+---------+-------+
6 rows in set (0.00 sec)
|
The following mysql ALTER command changes the "text" TEXT
type value above to "mediumtext" MEDIUMTEXT
type.
Code Block |
---|
mysql> ALTER TABLE TaskExec MODIFY message mediumtext; Query OK, 99 rows affected (0.45 sec) Records: 99 Duplicates: 0 Warnings: 0 MEDIUMTEXT; |
Code Block |
---|
mysql> describe TaskExec; +-----------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------+--------------+------+-----+---------+-------+ | id | bigint(20) | NO | PRI | NULL | | | endDate | datetime | YES | | NULL | | | message | mediumtext | YES | | NULL | | | startDate | datetime | YES | | NULL | | | status | varchar(255) | NO | | NULL | | | TASK_ID | bigint(20) | YES | MUL | NULL | | +-----------+--------------+------+-----+---------+-------+ 6 rows in set (0.00 sec) |
After sync / pull, users do not get assigned any external resource
By default, users are created in Syncope after sync / pull only with data provided by the external resource.
If you want to enrich such users, upon create or update after sync / pull, you need to provide an UserTemplate for the related Task.
Note that this mechanism allows to add various details to synchronizing / pulled users: password, attributes, resources, roles, etc.
How to clean up tasks?
The easiest way to perform this cleaning is via the admin console, by leveraging the bulk action feature (leftmost checkbox column, available in many data tables, then click on the blue gear on the bottom and choose the delete icon).
Via REST, task removal (for any kind of task: propagation, synchronization, scheduled, notification) can be performed as
Code Block | ||
---|---|---|
| ||
GET /rest/task/delete/{taskId} |
or
Code Block | ||
---|---|---|
| ||
DELETE /cxf/tasks/{taskId} (1.1.X)
DELETE /rest/tasks/{taskId} (>= 1.2.X) |
Consider anyway that task execution storage can be controlled by setting the trace level to NONE, FAILURES or SUMMARY instead of ALL (which is the default) on the corresponding Task or Notification.
I get the error "org.quartz.impl.StdSchedulerFactory - Couldn't generate instance Id! org.quartz.SchedulerException: Couldn't get host name!"
This is probably related to an incorrect networking configuration of the underlying system (host name not set). A simple workaround is to replace
Code Block | ||
---|---|---|
| ||
<prop key="org.quartz.scheduler.instanceId">AUTO</prop> mysql> |
with
Code Block | ||
---|---|---|
| ||
<prop key="org.quartz.scheduler.instanceId">syncope</prop> <!-- or any other custom id -->
|
in core/src/main/resources/schedulingContext.xml
.
How do I audit login success / failure?
Include the following information (<= 1.2.x)
Code Block |
---|
[REST]:[AuthenticationController]:[]:[login]:[SUCCESS]
[REST]:[AuthenticationController]:[]:[login]:[FAILURE] |
With Wildfly 10, I get the error "Unknown:ClassNotFoundException: com.sun.org.apache.xerces.internal.dom.DOMXSImplementationSourceImpl"
This issue is resolved by adding following entries to $JBOSS_HOME/modules/sun/jdk/main/modules.xml
:
Code Block | ||
---|---|---|
| ||
<path name="com/sun/org/apache/xerces/internal/dom"/>
<path name="com/sun/org/apache/xerces/internal/xni"/>
<path name="com/sun/org/apache/xerces/internal/jaxp"/> |
Reference: https://stackoverflow.com/questions/15684993/class-from-rt-jar-not-found