Genesys CTI User Forum
Genesys CTI User Forum => Genesys-related Development => Topic started by: gustavo.bonis on June 28, 2018, 06:36:23 PM
-
Has anyone ever seen this exception?
[b]com.genesyslab.platform.applicationblocks.com.ConfigServerException: Validation error : [CFGUniquenessViolation] , Object [CfgAgent] , DBID [34529] , Property [Unknown attribute] (ErrorType=CFGUniquenessViolation, ObjectType=CFGPerson, ObjectProperty=CFGNoProperty)[/b]
It happens when a skill batch is running (more than 50 skills per person and more than 30 people).
Full stack goes below.
2018-06-28 15:03:31,650 SEVERE [br.com.produban.beans.UploadSkillList] (default task-55) null: com.genesyslab.platform.applicationblocks.com.ConfigServerException: Validation error : [CFGUniquenessViolation] , Object [CfgAgent] , DBID [34529] , Property [Unknown attribute] (ErrorType=CFGUniquenessViolation, ObjectType=CFGPerson, ObjectProperty=CFGNoProperty)
at com.genesyslab.platform.applicationblocks.com.runtime.GlobalConfService.createConfigServerException(GlobalConfService.java:716)
at com.genesyslab.platform.applicationblocks.com.runtime.GlobalConfService.updateObject(GlobalConfService.java:256)
at com.genesyslab.platform.applicationblocks.com.CfgObject.updateSavedObject(CfgObject.java:346)
at com.genesyslab.platform.applicationblocks.com.CfgObject.save(CfgObject.java:248)
at com.genesyslab.platform.applicationblocks.com.CfgObject.save(CfgObject.java:223)
at com.genesyslab.platform.applicationblocks.com.objects.CfgPerson.save(CfgPerson.java:240)
at br.com.produban.beans.UploadSkillList.flushToCME2(UploadSkillList.java:521)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at javax.el.ELUtil.invokeMethod(ELUtil.java:300)
at javax.el.BeanELResolver.invoke(BeanELResolver.java:415)
at javax.el.CompositeELResolver.invoke(CompositeELResolver.java:256)
at com.sun.el.parser.AstValue.invoke(AstValue.java:285)
at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:304)
at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40)
at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)
at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40)
at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:147)
at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:814)
at javax.faces.component.UICommand.broadcast(UICommand.java:300)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:658)
at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
at br.com.produban.filter.LoginFilter.doFilter(LoginFilter.java:51)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)
at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)
at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)
at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)
at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)
at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:202)
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:805)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Best Regards,
-
And your batch? Seems there is an empty property being added
Enviado de meu E6633 usando o Tapatalk
-
Hi cavagnaro, thanks for the reply.
Please refer to the excerpt below to check If I'm doing something wrong. This is the body of implemented method responsible for adding skills to the person. It is called by another method in a loop. I see you pointed out the empty property although I cannot find where in the code I set this property.
Endpoint confServerEndpoint = new Endpoint("default", server, port);
ConfServerProtocol confServerProtocol = new ConfServerProtocol(confServerEndpoint);//SAC_SDG_R_Pj
confServerProtocol.setUserName(username);
confServerProtocol.setUserPassword(password);
IConfService service = ConfServiceFactory.retrieveConfService(confServerEndpoint);
if (service == null) {
service = ConfServiceFactory.createConfService(confServerProtocol);
}
CfgPersonQuery personQuery = null;
CfgPerson person = null;
CfgSkillQuery skillQuery = null;
try {
System.out.println("Connecting...");
confServerProtocol.open();
if (confServerProtocol.getState() == ChannelState.Opened || confServerProtocol.getState() == ChannelState.Opening) {
System.out.println("... connected");
personQuery = new CfgPersonQuery(service);
person = null;
skillQuery = new CfgSkillQuery(service);
personQuery.setUserName("gustavo");
person = (CfgPerson) service.retrieveObject(CfgPerson.class, personQuery);
System.out.print(person.getUserName());
for (CfgSkillLevel sl : person.getAgentInfo().getSkillLevels()) {
System.out.println(" has skill: " + sl.getSkill().getName() + " - Level: " + sl.getLevel());
}
System.out.println();
if (clearSkills) {
person.getAgentInfo().getSkillLevels().clear();
person.save();
}
skillQuery.setName("Republica");
addSkillToPerson(service, skillQuery, person, 11);
person.save();
ConfServiceFactory.releaseConfService(service);
System.out.println("Closing...");
confServerProtocol.close();
if (confServerProtocol.getState() == ChannelState.Closed || confServerProtocol.getState() == ChannelState.Closing) {
System.out.println("... closed");
}
}
} catch (ConfigException ex) {
Logger.getLogger(ConfServerConnectionTest.class.getName()).log(Level.SEVERE, null, ex);
} catch (ProtocolException | IllegalStateException | InterruptedException ex) {
Logger.getLogger(ConfServerConnectionTest.class.getName()).log(Level.SEVERE, null, ex);
}
-
Method that actually add skills
public static void addSkillToPerson(IConfService service, CfgSkillQuery skillQuery, CfgPerson person, int nota) throws ConfigException {
CfgSkill skill = (CfgSkill) service.retrieveObject(skillQuery);
if (skill != null) {
CfgSkillLevel skillLevel = new CfgSkillLevel(service, skill);
skillLevel.setLevel(nota);
skillLevel.setSkillDBID(skill.getDBID());
person.getAgentInfo().getSkillLevels().add(skillLevel);
person.save();
} else {
throw new ConfigException("Skill " + skillQuery.getName() + " not found! Person: " + person.getUserName());
}
}