1 2 Previous Next 15 Replies Latest reply on Mar 26, 2013 11:33 AM by sgujja

    Malformed Attribute Value - LDAP Translator - is this a bug?

    sgujja

      Hi,

       

      I am new to Teiid development and I need help in figuring out an issue we are noticing.

      Some background on what we are trying to do.     

      We defined views in our Metadata and are using our own translator to send requests from our UI to the LDAP, which I believe is using the TEIID LDAP Translator code behind the scenes.     

      We have multiple attributes defined in our view(metadata), and are of different datatypes like Varchar, Date, Time and Integer. We used our own translator to define them appropriately to TEIID.

       

      for(int i=0;i<varcharAttr.size();i++)

              {

                  Column userVarcharAttrCol =  metadataFactory.addColumn(varcharAttr.get(i).toString(),

                          TypeFacility.getDataTypeNameFromSQLType(Types.VARCHAR), table);

                  userVarcharAttrCol.setUpdatable(true);

                  userVarcharAttrCol.setNullType(NullType.Nullable);

              }

             

           

             for(int i=0;i<IntegerAttr.size();i++)

              {

                  Column userIntegerAttrCol =  metadataFactory.addColumn(IntegerAttr.get(i).toString(),

                          TypeFacility.getDataTypeNameFromSQLType(Types.INTEGER), table);

                  userIntegerAttrCol.setUpdatable(true);

                  userIntegerAttrCol.setNullType(NullType.Nullable);

              }

             

              for(int i=0;i<DateAttr.size();i++)

              {

                  Column userDateAttrCol =  metadataFactory.addColumn(DateAttr.get(i).toString(),

                          TypeFacility.getDataTypeNameFromSQLType(Types.DATE), table);

                  userDateAttrCol.setUpdatable(true);

                  userDateAttrCol.setNullType(NullType.Nullable);

              }

       

      So our problem here is:

      When we send a modify request to LDAP with value of datatype varchar, it works just fine. But when we send in a request with value of datatype integer or Date, it gives us the following exception and nothing actually goes to the LDAP server.

       

      [10:06:00.087][info][talledLocalContainer] 10:06:00,087 INFO  [com.ca.chorus.teiid.safety.SafetyHarnessExecutionFactory] (http--127.0.0.1-8080-4) Execute UPDATE tssadmingrp=acids,HOST=DE30_DE29,O=CAI,C=US SET perf = 1 WHERE acf2admingrp=lids,host=xe42_cia,o=ca,c=us?SUBTREE_SCOPE.DN = '"tssacid=ALLJEA5,tssadmingrp=acids,HOST=DE30_DE29,O=CAI,C=US"' against org.teiid.translator.ldap.LDAPUpdateExecution@5b23f927

      [10:06:00.165][info][talledLocalContainer] 10:06:00,149 WARN  [com.ca.chorus.teiid.safety.SafetyHarnessExecutionFactory] (http--127.0.0.1-8080-4) Execution failed: org.teiid.translator.TranslatorException: Update of "tssacid=ALLJEA5,tssadmingrp=acids,HOST=DE30_DE29,O=CAI,C=US" failed: Malformed 'perf' attribute value

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.translator.ldap.LDAPUpdateExecution.executeUpdate(LDAPUpdateExecution.java:338)

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.translator.ldap.LDAPUpdateExecution.execute(LDAPUpdateExecution.java:111)

      [10:06:00.165][info][talledLocalContainer]     at com.ca.chorus.teiid.safety.SafetyHarnessExecution.execute(SafetyHarnessExecution.java:115)

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.dqp.internal.datamgr.ConnectorWorkItem$1.execute(ConnectorWorkItem.java:290)

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:257)

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:425)

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.dqp.internal.process.DataTierTupleSource.nextTuple(DataTierTupleSource.java:270)

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.query.processor.relational.AccessNode.nextBatchDirect(AccessNode.java:279)

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:279)

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.query.processor.relational.RelationalPlan.nextBatch(RelationalPlan.java:148)

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.query.processor.QueryProcessor.nextBatchDirect(QueryProcessor.java:146)

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.query.processor.QueryProcessor.nextBatch(QueryProcessor.java:112)

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.query.processor.BatchIterator.finalRow(BatchIterator.java:70)

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.common.buffer.AbstractTupleSource.getCurrentTuple(AbstractTupleSource.java:69)

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.query.processor.BatchIterator.getCurrentTuple(BatchIterator.java:82)

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.common.buffer.AbstractTupleSource.hasNext(AbstractTupleSource.java:91)

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.query.processor.proc.ProcedurePlan.executePlan(ProcedurePlan.java:506)

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.query.processor.proc.CreateCursorResultSetInstruction.process(CreateCursorResultSetInstruction.java:69)

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.query.processor.proc.ExecDynamicSqlInstruction$1.process(ExecDynamicSqlInstruction.java:193)

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.query.processor.proc.ProcedurePlan.processProcedure(ProcedurePlan.java:361)

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.query.processor.proc.ProcedurePlan.nextBatchDirect(ProcedurePlan.java:289)

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.query.processor.proc.ProcedurePlan.nextBatch(ProcedurePlan.java:263)

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.query.processor.QueryProcessor.nextBatchDirect(QueryProcessor.java:146)

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.query.processor.QueryProcessor.nextBatch(QueryProcessor.java:112)

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.query.processor.proc.ForEachRowPlan.nextBatch(ForEachRowPlan.java:123)

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.query.processor.relational.PlanExecutionNode.nextBatchDirect(PlanExecutionNode.java:118)

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:279)

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.query.processor.relational.ProjectNode.nextBatchDirect(ProjectNode.java:146)

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:279)

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.query.processor.relational.RelationalPlan.nextBatch(RelationalPlan.java:148)

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.query.processor.QueryProcessor.nextBatchDirect(QueryProcessor.java:146)

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.query.processor.QueryProcessor.nextBatch(QueryProcessor.java:112)

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.query.processor.BatchCollector.collectTuples(BatchCollector.java:153)

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.dqp.internal.process.RequestWorkItem.processMore(RequestWorkItem.java:382)

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.dqp.internal.process.RequestWorkItem.process(RequestWorkItem.java:291)

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.dqp.internal.process.AbstractWorkItem.run(AbstractWorkItem.java:51)

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.dqp.internal.process.RequestWorkItem.run(RequestWorkItem.java:219)

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.dqp.internal.process.DQPCore.executeRequest(DQPCore.java:386)

      [10:06:00.165][info][talledLocalContainer]     at sun.reflect.GeneratedMethodAccessor76.invoke(Unknown Source) [:1.7.0_03]

      [10:06:00.165][info][talledLocalContainer]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.7.0_03]

      [10:06:00.165][info][talledLocalContainer]     at java.lang.reflect.Method.invoke(Method.java:601) [rt.jar:1.7.0_03]

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.logging.LogManager$LoggingProxy.invoke(LogManager.java:121) [teiid-api-8.1.0.FinalCAFix-SNAPSHOT.jar:8.1.0.FinalCAFix-SNAPSHOT]

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.jboss.TransportService$2.invoke(TransportService.java:205)

      [10:06:00.165][info][talledLocalContainer]     at $Proxy29.executeRequest(Unknown Source)    at sun.reflect.GeneratedMethodAccessor76.invoke(Unknown Source) [:1.7.0_03]

      [10:06:00.165][info][talledLocalContainer]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.7.0_03]

      [10:06:00.165][info][talledLocalContainer]     at java.lang.reflect.Method.invoke(Method.java:601) [rt.jar:1.7.0_03]

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.transport.LocalServerConnection$1$1.call(LocalServerConnection.java:131)

      [10:06:00.165][info][talledLocalContainer]     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) [rt.jar:1.7.0_03]

      [10:06:00.165][info][talledLocalContainer]     at java.util.concurrent.FutureTask.run(FutureTask.java:166) [rt.jar:1.7.0_03]

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:249)

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:233)

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.transport.LocalServerConnection$1.invoke(LocalServerConnection.java:129)

      [10:06:00.165][info][talledLocalContainer]     at $Proxy29.executeRequest(Unknown Source)    at org.teiid.jdbc.StatementImpl.execute(StatementImpl.java:631) [teiid-client-8.1.0.FinalCAFix-SNAPSHOT.jar:8.1.0.FinalCAFix-SNAPSHOT]

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.jdbc.StatementImpl.executeSql(StatementImpl.java:506) [teiid-client-8.1.0.FinalCAFix-SNAPSHOT.jar:8.1.0.FinalCAFix-SNAPSHOT]

      [10:06:00.165][info][talledLocalContainer]     at org.teiid.jdbc.PreparedStatementImpl.executeUpdate(PreparedStatementImpl.java:217) [teiid-client-8.1.0.FinalCAFix-SNAPSHOT.jar:8.1.0.FinalCAFix-SNAPSHOT]

      [10:06:00.165][info][talledLocalContainer]     at com.ca.chorus.db.DbExecutor$9.call(DbExecutor.java:828) [common-db-3.0.1-SNAPSHOT.jar:]

      [10:06:00.165][info][talledLocalContainer]     at com.ca.chorus.db.DbExecutor$9.call(DbExecutor.java:804) [common-db-3.0.1-SNAPSHOT.jar:]

      [10:06:00.165][info][talledLocalContainer]     at com.ca.chorus.aop.guice.PerfTracer.trace(PerfTracer.java:57) [common-utils-3.0.1-SNAPSHOT.jar:]

      [10:06:00.165][info][talledLocalContainer]     at com.ca.chorus.db.DbExecutor.executeDml(DbExecutor.java:803) [common-db-3.0.1-SNAPSHOT.jar:]

      [10:06:00.165][info][talledLocalContainer]     at com.ca.chorus.db.DbExecutor.executeDml(DbExecutor.java:773) [common-db-3.0.1-SNAPSHOT.jar:]

      [10:06:00.165][info][talledLocalContainer]     at com.ca.mfui.chorusR2.server.service.ObjectsServiceImpl.updateFormObject(ObjectsServiceImpl.java:1257) [chorus-service-3.0.1-SNAPSHOT.jar:]

      [10:06:00.165][info][talledLocalContainer]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_03]

      [10:06:00.165][info][talledLocalContainer]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) [rt.jar:1.7.0_03]

      [10:06:00.165][info][talledLocalContainer]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.7.0_03]

      [10:06:00.165][info][talledLocalContainer]     at java.lang.reflect.Method.invoke(Method.java:601) [rt.jar:1.7.0_03]

      [10:06:00.165][info][talledLocalContainer]     at com.ca.mfui.chorusR2.servlet.ChorusGWTServlet.processCall(ChorusGWTServlet.java:272) [chorus-service-3.0.1-SNAPSHOT.jar:]

      [10:06:00.165][info][talledLocalContainer]     at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248) [gwt-servlet-2.4.0.jar:]

      [10:06:00.165][info][talledLocalContainer]     at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62) [gwt-servlet-2.4.0.jar:]

      [10:06:00.165][info][talledLocalContainer]     at javax.servlet.http.HttpServlet.service(HttpServlet.java:754) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]

      [10:06:00.165][info][talledLocalContainer]     at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]

      [10:06:00.165][info][talledLocalContainer]     at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:263) [guice-servlet-3.0.jar:]

      [10:06:00.165][info][talledLocalContainer]     at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:178) [guice-servlet-3.0.jar:]

      [10:06:00.165][info][talledLocalContainer]     at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91) [guice-servlet-3.0.jar:]

      [10:06:00.165][info][talledLocalContainer]     at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:62) [guice-servlet-3.0.jar:]

      [10:06:00.165][info][talledLocalContainer]     at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:168) [guice-servlet-3.0.jar:]

      [10:06:00.165][info][talledLocalContainer]     at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) [guice-servlet-3.0.jar:]

      [10:06:00.165][info][talledLocalContainer]     at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:168) [guice-servlet-3.0.jar:]

      [10:06:00.165][info][talledLocalContainer]     at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) [guice-servlet-3.0.jar:]

      [10:06:00.165][info][talledLocalContainer]     at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:168) [guice-servlet-3.0.jar:]

      [10:06:00.165][info][talledLocalContainer]     at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) [guice-servlet-3.0.jar:]

      [10:06:00.165][info][talledLocalContainer]     at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:168) [guice-servlet-3.0.jar:]

      [10:06:00.165][info][talledLocalContainer]     at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) [guice-servlet-3.0.jar:]

      [10:06:00.165][info][talledLocalContainer]     at com.ca.mfui.chorusR2.servlet.TransactionFilter$1.call(TransactionFilter.java:54) [chorus-service-3.0.1-SNAPSHOT.jar:]

      [10:06:00.165][info][talledLocalContainer]     at com.ca.mfui.chorusR2.servlet.TransactionFilter$1.call(TransactionFilter.java:43) [chorus-service-3.0.1-SNAPSHOT.jar:]

      [10:06:00.165][info][talledLocalContainer]     at com.ca.chorus.server.transaction.TransactionRunner.invoke(TransactionRunner.java:19) [transaction-3.0.1-SNAPSHOT.jar:]

      [10:06:00.165][info][talledLocalContainer]     at com.ca.chorus.server.transaction.TransactionRunner$$EnhancerByGuice$$de0a4189.CGLIB$invoke$1(<generated>)

      [10:06:00.165][info][talledLocalContainer]     at com.ca.chorus.server.transaction.TransactionRunner$$EnhancerByGuice$$de0a4189$$FastClassByGuice$$c9322dda.invoke(<generated>)

      [10:06:00.165][info][talledLocalContainer]     at com.google.inject.internal.cglib.proxy.$MethodProxy.invokeSuper(MethodProxy.java:228) [guice-3.0.jar:]

      [10:06:00.165][info][talledLocalContainer]     at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:72) [guice-3.0.jar:]

      [10:06:00.165][info][talledLocalContainer]     at com.ca.chorus.aop.guice.PerfTracer.trace(PerfTracer.java:75) [common-utils-3.0.1-SNAPSHOT.jar:]

      [10:06:00.165][info][talledLocalContainer]     at com.ca.chorus.aop.guice.PerfTracer.trace(PerfTracer.java:92) [common-utils-3.0.1-SNAPSHOT.jar:]

      [10:06:00.165][info][talledLocalContainer]     at com.ca.chorus.server.transaction.TransactionalMethodInterceptor.invoke(TransactionalMethodInterceptor.java:31) [transaction-3.0.1-SNAPSHOT.jar:]

      [10:06:00.180][info][talledLocalContainer]     at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:72) [guice-3.0.jar:]

      [10:06:00.180][info][talledLocalContainer]     at com.google.inject.internal.InterceptorStackCallback.intercept(InterceptorStackCallback.java:52) [guice-3.0.jar:]

      [10:06:00.180][info][talledLocalContainer]     at com.ca.chorus.server.transaction.TransactionRunner$$EnhancerByGuice$$de0a4189.invoke(<generated>)

      [10:06:00.180][info][talledLocalContainer]     at com.ca.mfui.chorusR2.servlet.TransactionFilter.doFilter(TransactionFilter.java:42) [chorus-service-3.0.1-SNAPSHOT.jar:]

      [10:06:00.180][info][talledLocalContainer]     at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) [guice-servlet-3.0.jar:]

      [10:06:00.180][info][talledLocalContainer]     at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) [guice-servlet-3.0.jar:]

      [10:06:00.180][info][talledLocalContainer]     at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:168) [guice-servlet-3.0.jar:]

      [10:06:00.180][info][talledLocalContainer]     at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) [guice-servlet-3.0.jar:]

      [10:06:00.180][info][talledLocalContainer]     at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:118) [guice-servlet-3.0.jar:]

      [10:06:00.180][info][talledLocalContainer]     at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:113) [guice-servlet-3.0.jar:]

      [10:06:00.180][info][talledLocalContainer]     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:]

      [10:06:00.180][info][talledLocalContainer]     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]

      [10:06:00.180][info][talledLocalContainer]     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:]

      [10:06:00.180][info][talledLocalContainer]     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:]

      [10:06:00.180][info][talledLocalContainer]     at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]

      [10:06:00.180][info][talledLocalContainer]     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:]

      [10:06:00.180][info][talledLocalContainer]     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:]

      [10:06:00.180][info][talledLocalContainer]     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:]

      [10:06:00.180][info][talledLocalContainer]     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:]

      [10:06:00.180][info][talledLocalContainer]     at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:]

      [10:06:00.180][info][talledLocalContainer]     at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:]

      [10:06:00.180][info][talledLocalContainer]     at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:]

      [10:06:00.180][info][talledLocalContainer]     at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_03]

       

       

      Are we missing something here? Any help in this matter is really appreciated.

       

      Thank you,

      Sai.

        • 1. Re: Malformed Attribute Value - LDAP Translator - is this a bug?
          rareddy

          It is telling you that the statement

           

          UPDATE tssadmingrp=acids,HOST=DE30_DE29,O=CAI,C=US SET perf = 1 WHERE acf2admingrp=lids,host=xe42_cia,o=ca,c=us?SUBTREE_SCOPE.DN = '"tssacid=ALLJEA5,tssadmingrp=acids,HOST=DE30_DE29,O=CAI,C=US
          

           

          is incorrectly formed, see why that is if that is being done in your translator

           

          Ramesh..

          • 2. Re: Malformed Attribute Value - LDAP Translator - is this a bug?
            sgujja

            I believe that is the correct DN we want to send to LDAP. As we use the same code path to generate the update queries for all datatypes. And here is a update request for value of datatype varchar, which was successful.    

             

            Execute UPDATE tssadmingrp=acids,HOST=DE30_DE29,O=CAI,C=US SET name = 'DO NOT DELETE' WHERE acf2admingrp=lids,host=xe42_cia,o=ca,c=us?SUBTREE_SCOPE.DN = '"tssacid=ALLJEA5,tssadmingrp=acids,HOST=DE30_DE29,O=CAI,C=US"'

            • 3. Re: Malformed Attribute Value - LDAP Translator - is this a bug?
              rareddy

              OK, in that case, I see from the code that that is error that is coming from the LDAP itself. If you want you can write a simple Java client to LDAP using LDAPContext and see why this is occurring, or run the Teiid in debug and see the exception.

               

              Based on what you figure out if that is right form or not, then we decide it is Teiid bug.

               

              Ramesh..

              • 4. Re: Malformed Attribute Value - LDAP Translator - is this a bug?
                sgujja

                This is what I found:

                 

                When I give a value for the field 'PERF' which is defined as integer, our code generates the correct DN and but do not send the request over to LDAP server due to the MALFORMED Value error I out in my original post.

                 

                If I send a request with a varchar, it generates the correct DN and sends the request to LDAP and is successful.

                 

                When I remove the value for field 'PERF' such that the query generated by our translator is:

                 

                UPDATE tssadmingrp=acids,HOST=DE30_DE29,O=CAI,C=US SET MAIL = 'N', perf = NULL WHERE acf2admingrp=lids,host=xe42_cia,o=ca,c=us?SUBTREE_SCOPE.DN = '"tssacid=ALLJEA5,tssadmingrp=acids,HOST=DE30_DE29,O=CAI,C=US"'

                 

                The query goes through LDAP and we see the appropriate messages in the LDAP log.

                 

                As you can see we included two different values in our request, a varchar (MAIL) and integer (PERF). This query was sent to LDAP server and log is populated.

                 

                When we just sent the request with PERF with no value in it (it was 0 before, removed the value), the query generated was:

                 

                UPDATE tssadmingrp=acids,HOST=DE30_DE29,O=CAI,C=US SET perf = NULL WHERE acf2admingrp=lids,host=xe42_cia,o=ca,c=us?SUBTREE_SCOPE.DN = '"tssacid=ALLJEA5,tssadmingrp=acids,HOST=DE30_DE29,O=CAI,C=US"'

                 

                This was sent to LDAP and was able to see the LDAP transactions in the LDAP server log.

                 

                Sample messages in our LDAP log:

                <<< dn: <tssacid=ALLJEA5,tssadmingrp=acids,host=DE30_DE29,o=CAI,c=US>, <tssacid=ALLJEA5,tssadmingrp=ACIDS,host=DE30_DE29,o=CAI,c=US>

                conn=1001 op=5 modifications:

                replace: perf

                         no values

                 

                 

                So my question is why is the request not sent at all to the LDAP server, when we give a value in that PERF field. Is the Malformed error, occuring somewhere midway, even before the query reaches LDAP?

                 

                Thank you.

                • 5. Re: Malformed Attribute Value - LDAP Translator - is this a bug?
                  rareddy

                  Sai,

                   

                  Teiid is sending the value as integer as defined by your metadata definition, thus the error. However, the call to "modifyAttributes" on  LDAPContext is failing, this is outside scope of the Teiid. Now there can be only two possibilities. The "perf" is not defined as integer on your LDAP store or there is no attribute called "perf" on the class you are accessing on the LDAP store. Figure out which one it is. It is not Teiid bug.

                   

                  Ramesh..

                  • 6. Re: Malformed Attribute Value - LDAP Translator - is this a bug?
                    sgujja

                     

                    Ramesh,

                     

                    I looked up our LDAP definations and "perf" is defined as an integer and we have the attribute called as "perf" in our object class.

                     

                    We have the same problem not just with "perf", but with all the attributes which are defined as Integer or Date.

                     

                    I tried a simple test to see if we have everything working on our LDAP side. I ran a command line modify query to LDAP passing in a value for perf, using the exact DN as we are from the UI.

                     

                    Here is the LDIF file I had:

                     

                     

                    DN: tssacid=alljea5,tssadmingrp=acids,host=de30_de29,o=cai,c=us

                    changetype:modify

                    replace:perf

                    perf:4

                     

                     

                    This query was successful and changed the value of  "perf" to 4 in the database.

                     

                    I tried another test from TEIID DATABASE DESIGNER passing in the same query to LDAP and here is what I get:

                     

                    Execute UPDATE tssadmingrp=acids,HOST=DE30_DE29,O=CAI,C=US SET perf = 5 WHERE acf2admingrp=lids,host=xe42_cia,o=ca,c=us?SUBTREE_SCOPE.DN = '"tssacid=ALLJEA5,tssadmingrp=acids,HOST=DE30_DE29,O=CAI,C=US"'

                    Execution failed: org.teiid.translator.TranslatorException: Update of "tssacid=ALLJEA5,tssadmingrp=acids,HOST=DE30_DE29,O=CAI,C=US" failed: Malformed 'perf' attribute value

                     

                     

                    And nothing was sent to the LDAP server.

                     

                    Thanks.

                    • 7. Re: Malformed Attribute Value - LDAP Translator - is this a bug?
                      sgujja

                      Ramesh,

                       

                      I think I figured out a work around for this. I changed the value of "perf" to be of datatype "varchar" in both our metadata and translator and sent the same query to LDAP.

                      It was sent through LDAP and our LDAP server converted it to the appropriate query and changed the value in the database. So It appears that something in the middle doesn't like the Integer being sent.

                      • 8. Re: Malformed Attribute Value - LDAP Translator - is this a bug?
                        sgujja

                        We have the workaround, but can't really use it, as it is causing other issues in our code. Any help with this issue is appreciated.

                         

                        Thank you.

                        • 9. Re: Malformed Attribute Value - LDAP Translator - is this a bug?
                          shawkins

                          Based upon http://www.docjar.com/html/api/com/sun/jndi/ldap/LdapClient.java.html this looks like an assumption that is being made by the default sun JNDI logic.  They do want only String or byte[] objects for the attribute values.  I think we do need to convert our values to string before shiping them over (which is why your workaround partially works).  However for the non-basic numeric values there may be issue with formating.

                           

                          Steve

                          • 10. Re: Malformed Attribute Value - LDAP Translator - is this a bug?
                            rareddy

                            Are there any other implementations of LDAPContext available, which would support this? I did quick scan but did not come across any.

                            • 11. Re: Malformed Attribute Value - LDAP Translator - is this a bug?
                              shawkins

                              That would likely be jre dependent and at least for openjdk and idm it looks like they stick with the sun implementation.  So a fix will be needed.  Sai can you log an issue for this?

                               

                              Steve

                              • 12. Re: Malformed Attribute Value - LDAP Translator - is this a bug?
                                shawkins
                                • 13. Re: Malformed Attribute Value - LDAP Translator - is this a bug?
                                  sgujja

                                  Steve,

                                   

                                  Thank you for logging in the issue. So when we have this fix, we still can have the sttributes defined as Integers in our Metadata and send in the request, but TEIID converts it into string before passing it along, is my understanding correct?

                                   

                                  Thank you,

                                  Sai

                                  1 2 Previous Next