Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

TDI LDAP connector restart

101 views
Skip to first unread message

tdiibm

unread,
Sep 9, 2009, 1:27:37 PM9/9/09
to
Hi,
How do i call the initial iterator connector from inside flow. If
the transaction timed out because of the time limit, i would like to
start the same transaction from the iterator without stopping the
assembly line. I mean retry the same transaction. Is there any way?
Thanks
Venkul

tdiibm

unread,
Sep 9, 2009, 1:40:21 PM9/9/09
to

Hi,
here is the reason for the above question. AL has a ldap update
connector. update was issued to the LDAP thru update connector. the
data was updated but for some reason LDAP server's responce did not
reach TDI server. TDI server was waiting for the response indefinitly
because of the time limit parameter set to '0'. Now i would like to
set the time limit to 30 secs and if the same issue occurs, i would
like to get the error terminate the transaction (not the assembly
line). and reissue the record update again from the Feed. Is there any
way i could issue the record to the feed from the flow? any help is
greately appreciated.
Thanks
Venkul

Eddie Hartman

unread,
Sep 10, 2009, 3:44:43 AM9/10/09
to
On Sep 9, 7:40 pm, tdiibm <ven...@gmail.com> wrote:
> On Sep 9, 1:27 pm, tdiibm <ven...@gmail.com> wrote:
>
> > Hi,
> >     How do i call the initial iterator connector from inside flow. If
> > the transaction timed out because of the time limit, i would like to
> > start the same transaction from the iterator without stopping the
> > assembly line. I mean retry the same transaction. Is there any way?
> > Thanks
> > Venkul
>
The easiest way to deal with timeouts is to click on the Connection
Error
tab and enable Auto-Reconnect. Note you only enable this for
connection
loss, not for initialize.

Also, this may not work as desired for Iterator mode. There is more on
this here:
http://tdiingoutloud.blogspot.com/2009/08/dealing-with-errors.html
and here:
http://publib.boulder.ibm.com/infocenter/tivihelp/v2r1/topic/com.ibm.IBMDI.doc_6.1.1/usersguide37.htm?resultof=%22%63%6f%6e%6e%65%63%74%69%6f%6e%22%20%22%63%6f%6e%6e%65%63%74%22%20%22%65%72%72%6f%72%73%22%20%22%65%72%72%6f%72%22%20
(search for "reconnect" in the above page)
and the Flow Diagram for Reconnect is here:
http://publib.boulder.ibm.com/infocenter/tivihelp/v2r1/topic/com.ibm.IBMDI.doc_6.1.1/referenceguide159.htm?resultof=%22%72%65%63%6f%6e%6e%65%63%74%22%20

-Eddie

tdiibm

unread,
Sep 10, 2009, 12:45:12 PM9/10/09
to
On Sep 10, 3:44 am, Eddie Hartman <eddiehart...@gmail.com> wrote:
> On Sep 9, 7:40 pm, tdiibm <ven...@gmail.com> wrote:> On Sep 9, 1:27 pm, tdiibm <ven...@gmail.com> wrote:
>
> > > Hi,
> > >     How do i call the initial iterator connector from inside flow. If
> > > the transaction timed out because of the time limit, i would like to
> > > start the same transaction from the iterator without stopping the
> > > assembly line. I mean retry the same transaction. Is there any way?
> > > Thanks
> > > Venkul
>
> The easiest way to deal with timeouts is to click on the Connection
> Error
> tab and enable Auto-Reconnect. Note you only enable this for
> connection
> loss, not for initialize.
>
> Also, this may not work as desired for Iterator mode. There is more on
> this here:http://tdiingoutloud.blogspot.com/2009/08/dealing-with-errors.html
> and here:http://publib.boulder.ibm.com/infocenter/tivihelp/v2r1/topic/com.ibm....

> (search for "reconnect" in the above page)
> and the Flow Diagram for Reconnect is here:http://publib.boulder.ibm.com/infocenter/tivihelp/v2r1/topic/com.ibm....

>
> -Eddie
>
>
>
> > Hi,
> >  here is the reason for the above question. AL has a ldap update
> > connector. update was issued to the LDAP thru update connector. the
> > data was updated but for some reason LDAP server's responce did not
> > reach TDI server. TDI server was waiting for the response indefinitly
> > because of the time limit parameter set to '0'. Now i would like to
> > set the time limit to 30 secs and if the same issue occurs, i would
> > like to get the error terminate the transaction (not the assembly
> > line). and reissue the record update again from the Feed. Is there any
> > way i could issue the record to the feed from the flow? any help is
> > greately appreciated.
> > Thanks
> > Venkul- Hide quoted text -
>
> - Show quoted text -

Eddie,
Thanks for the response. I put the reconnect logic already.
My question is what if the ldap did not respond with update
successfull (may be in a hung state). Instead of TDI waiting for the
response as it is hung, is there any way to get the hung response from
LDAP and start the transaction again with system.restartEntry()? I put
the time limit as 5 secs under LDAP config. However, TDI is still hung
state even after 1 minute. Is there any way that i put a code in TDI
to check the LDAP hung state? any help is greatly appreciated.
Thanks
Venkul

Eddie Hartman

unread,
Sep 11, 2009, 6:47:36 AM9/11/09
to
Well, Venkul, the AL (which is a Java Thread) is hung while waiting
for the timeout. You should be able to change the JNDI timeout by
adding an Extra Providers Parameter in the Connector Config, e.g.

com.sun.jndi.ldap.read.timeout:1000

But there are other timeout issues as well, for example firewalls.

Barring this, you could monitor your WorkerAL from another
AssemblyLine, for example by listening for TDI Events.
There is a Connector designed for this purpose:
http://publib.boulder.ibm.com/infocenter/tivihelp/v2r1/topic/com.ibm.IBMDI.doc_6.1.1/referenceguide45.htm#servernotconn

You could also have the WorkerAL update a Java property
before and after the Update:

java.lang.System.getProperties().put("timestamp", new
java.util.Date());

and then your other AL could monitor this periodically to see
if the WorkerAL was hanging. If so, it could send out alerts.
If the WorkerAL is started by this monitoring AssemblyLine, e.g.

al = main.startAL("WorkerAL");

then you have a reference to this thread and could kill
it if desired:

al.terminate();

Without this reference then you could also try to get
the Server itself to stop the AL:

numALs2stop = main.stopAL("WorkerAL");

Hope this helps.
-Eddie

0 new messages