Forum IndexRegisterGamesSearchFAQBankMemberlistUsergroupsLog in
and more geeky Tech TALKS
Goto page 1, 2  Next
 
Reply to topic    Afrocentric Online Forum Index » The Matrix View previous topic
View next topic

and more geeky Tech TALKS
Author Message
Marz



Joined10 Jul 2003
Posts30659
Bank4294967295
Bones546240.93 Bones

Post and more geeky Tech TALKS Reply with quote
What is a "thread" (clearly defined).

don't dare point me to any "whatis.com" or wikipedia entries either. I know there are a couple of programmers here so I'm curious of THEIR explanation..


Last edited by Marz on Fri Sep 25, 2009 8:14 pm; edited 2 times in total
Thu Dec 18, 2008 7:37 pm View user's profile Find all posts by Marz Send private message Send e-mail
BobbyDigital



Joined03 Aug 2002
Posts7583
LocationBlack Hollywood
Bank0
Bones21765.78 Bones

Post Reply with quote
[b]It just a task or executable program that runs in a process.

It just gets a little complicated when you get into multithreading where you have more than one thread running while sharing the same process (memory and resources).

I my line of work (POS Technology) we deal mostly with multithreading in the credit transaction world. So... we can have a process that does many tasks (threads) at the same time when you swipe you card at a gas pump. One could handle sending your information to the credit host, one could handle any messages that goes from the pump to the store's back office and vice versa, one can handle the messages you get, one can handle error signals, and one can just perform the actual task of just completing the transaction.

Basically this is a selling point to our clients when it comes to speed of service we can provide.

And it gets more complicated when you look at the ways this can be accomplished.

From there, I have to refer to some computer science books in my basement or wikipedia or something.[/b][/b]
Thu Dec 18, 2008 8:15 pm View user's profile Find all posts by BobbyDigital Send private message Yahoo Messenger
Marz



Joined10 Jul 2003
Posts30659
Bank4294967295
Bones546240.93 Bones

Post Reply with quote
that (obviously) makes sense.

I often hear my coworkers (our troubleshooting team) constantly say, "this class is consuming an awful lot of threads". I know what a class is but I was more curious as to what they meant by threads.

Now I can assume that it's probably a badly written/coded class thus they'll defer back to the developers to ask to write it better so the consumption of threads isn't as great.
Thu Dec 18, 2008 8:52 pm View user's profile Find all posts by Marz Send private message Send e-mail
Horse



Joined19 Mar 2002
Posts9626
Bank0
Bones73234.78 Bones

Post Reply with quote
For Web App. using a Application Server, the Application Server usually manges the number of threads open as well as the db connection pools.

If you are doing low level socket connections then the programmer usually manages the threads.

So in J2ee the threads are usually managed by the Container of the App/Web server.

In plain ol java, the developer has to manage the threads.

You can get into a deadlock situation where two or more threads are waiting on one another to finish.

Almost like a coding a endless loop.

In the first situation where the Application Server is managing resorces, then the Support team can usually configure the Server for the max number of threads..

If using plain ol Java, the developer has to manage the thread and it can get complicated.

If the programmer is doing something stupid, then either they should dummy down the app (cuz they don't understand threads) or get someone that can code it correctly.

It's best to let the App. Server manage as much as possible and link into the many services it provides
Tue Dec 30, 2008 11:28 pm View user's profile Find all posts by Horse Send private message
bodom



Joined17 Jan 2002
Posts10653
LocationINDIANAPOLIS
Bank4294967295
Bones999999999.99 Bones
Game Trophies:  4
Hall Of Fame Member

Post Reply with quote
A thread is an execution path. Threads can collide (deadlock), but they do not share the same memory space. That's the important thing.

I deal with a multithreaded code and possible deadlocks within the code I maintain. VOIP (and telephony in general) uses a lot of multithreadedness. I'll try to put it in layman's terms for you.


--------------------------------------------------------------------------------
Suppose you have a server and you have an incoming call come in from the gateway.

PBX ---> Gateway ---> yourServer

YourServer will then create some sort of call "instance" and handle what's necessary (call states, play ringback, RTP audio streams, etc). Suppose this call gets routed to Agent1.

Now another inbound call comes in on YourServer. It will also need to handle what's necessary. It has its own memory space, its own call states, its own audio streams. In other words, [i]it is independent[/i] of other calls in the system.

On this same server, you may have an outbound call, and incoming fax, etc. All of these are running concurrently at the same time.

So each thread is a thread of execution.

Sometimes threads need to share information. For example, call1 comes in and gets routed to an agent. Another call may come in and get routed to this same station (call waiting). Now you need some sort of locking mechanism on critical sections of data. Otherwise, the call2 will just step all over what call1 is doing and screw around with the original call killing the purpose of independence.



--------------------------------------------------------------------------------
A better way to think of threads, objects, locks, etc is a bathroom.

Suppose you want to design a bathroom at an airport. Each person would be a thread. The urinals would be your objects. Each of these objects has a state. You may do something like this:


pseudo code:

class GenericObject
enum state
{
eState_Available,
eState_Occupied,
eState_OutOfService
}

class Urinal : public GenericObject
you would add other stuff like
AutomaticFlush();
ManualFlush();

class Sink: public GenericObject
FaucetOn();


OK. Now you create many instances of these objects.

The urinal has three states. In use, available, and out of service. Each person is a [i]thread[/i]. Each person is independent and can do what they want to do.

If Person #1 is using Urinal #1, you need to insure that Person #2 (another thread) can't mess with Urinal #1's critical data, or you can create a deadlock situation where both Person #1 and Person #2 are trying to use the urinal at the same time and screws around with the data. Either Person #2 pisses on the same urinal as Person #1 or Person #1 may be done with the urinal, yet the state is screwed up as one thread undercuts another and Person #2 just sits there indefinitely waiting on the urinal state to change to available (but never does). And therefore he just pisses on himself (unless you create a timeout condition).
Wed Dec 31, 2008 12:07 am View user's profile Find all posts by bodom Send private message AIM Address Yahoo Messenger MSN Messenger ICQ Number
Horse



Joined19 Mar 2002
Posts9626
Bank0
Bones73234.78 Bones

Post Reply with quote
Actually you can get into a deadlock situation where one object 1 request data from object 2...

Meanwhile, object 2 is requesting data from object 3..

And (because of bad coding) object 3 is requesting data from object 1.

So the deadlock situation occurs unless you code in some type of wait or sleep state.

A better approach that java and can't remember if C++ uses is to make each thread implement the synchronize interface and monitor the thread states. Won't help much in the round robin example above, but it helps when multiple objects are trying to piss in urnial 1(Bodom's example)

That way a lock is placed on the object and no other object can use it until the lock frees.


Threads have state and are hell to debug..
Wed Dec 31, 2008 12:18 am View user's profile Find all posts by Horse Send private message
bodom



Joined17 Jan 2002
Posts10653
LocationINDIANAPOLIS
Bank4294967295
Bones999999999.99 Bones
Game Trophies:  4
Hall Of Fame Member

Post Reply with quote
[quote="Horse"]Threads have state and are hell to debug..[/quote]
Damn straight. I don't even bother trying to reproduce a race condition. So I must sift through code and try to make sense of it all and "guess" that my solution would actually fix it. You can "freeze" threads in a debugger, but with so many time dependent things in telephony, it doesn't help much.

Yeah, that cyclical deadlock stuff can really suck.

For example,
thread #1 does a lock on A, some code, then a lock on B.
thread #2 does a lock on B, then later in the code, does a lock on A.


You just shot yourself here.

thread #1 does a lock on A
thread #2 then executes before thread #1 can lock B and thread #2 does a lock on B

now thread #1 is blocked waiting for B to free
but thread #2 is also blocked waiting for A to free


You are toast. Classic deadlock.
Wed Dec 31, 2008 1:12 am View user's profile Find all posts by bodom Send private message AIM Address Yahoo Messenger MSN Messenger ICQ Number
Horse



Joined19 Mar 2002
Posts9626
Bank0
Bones73234.78 Bones

Post Reply with quote
You have a tough job if part of your job is debugging for VOIP...

I worked with a team back in the early days of VOIP and they thought they could design all the low level calls using J2ee.
It was a disaster. The performance was bad and on top of that most of the team was new to EJB, threads and all that stuff.

They scrapped the project and rewrote everything in Native C.

I wonder if the application you debug is written in C or some low level language like that..

Java is not the answer to everything.

Marz should rename the thread to Technical talk... I'd like to hear more about VOIP..

I still have some of the terms down but its been a while.

What happens between the start and end of a call with VOIP..??
Wed Dec 31, 2008 3:27 pm View user's profile Find all posts by Horse Send private message
bodom



Joined17 Jan 2002
Posts10653
LocationINDIANAPOLIS
Bank4294967295
Bones999999999.99 Bones
Game Trophies:  4
Hall Of Fame Member

Post Reply with quote
[quote="Horse"]Marz should rename the thread to Technical talk... I'd like to hear more about VOIP..

I still have some of the terms down but its been a while.

What happens between the start and end of a call with VOIP..??[/quote]
Basically, there's two main protocols. SIP and H.323. We use SIP 2.0 exclusively at [url=http://www.inin.com/]Interactive Intelligence[/url]. SIP is the protocol we must adhere to, to make call connections work.

http://en.wikipedia.org/wiki/Session_Initiation_Protocol

In the most basic of calls, for an incoming call, we receive an INVITE packet. We then transmit a Trying and OK packet. And we get back an ACK from the gateway. For an outbound call, we send the INVITE and wait for the OK from the remote side and send back an ACK. This starts call initiation. Of course, there's much more to it than that when you deal with RE-INVITES, T.38 packets (fax), and other SIP request commands.

A BYE packet is sent to signify the end of the call.


List of SIP requests:
http://en.wikipedia.org/wiki/List_of_SIP_request_methods

List of SIP response codes:
http://en.wikipedia.org/wiki/List_of_SIP_response_codes
Tue Jan 06, 2009 6:23 pm View user's profile Find all posts by bodom Send private message AIM Address Yahoo Messenger MSN Messenger ICQ Number
Marz



Joined10 Jul 2003
Posts30659
Bank4294967295
Bones546240.93 Bones

Post Reply with quote
I can see why you'll say that Horsenutts. I was thinking of doing that but I didn't want this thread to become, "How to fix this WINDOWS issue" type of thread.


Funny Bodom mentioned something about SIP requests. I'm not a code monkey and honestly don't really WANT to be one totally but if I can understand the coding or generally waht the application is SUPPOSED to do better it can help me do what I need to do better. Funny thing about SIP is within Websphere (the latest version 6.1, granted theres a 7 but 6.1 is the one thats currently deployed although some are still using 5.1 but i won't go there) they've made a lot of updates for that.

I recall having to about how to deploy a SAR..

This year I'm gonna take some babysteps.. I can't believe I'm gonna try an approach that I read here by someone but thats beside the point. I'm in the unique position that I understand some of the connectivity issues and application infrastructure pieces. Where I'm weak at is my overall understanding in some areas. Hence why I want to bone up on my programming. We work with developers all the time and one thing I hate about coders is that they're very knowledgeable about what THEY do but often times thats it. I don't know if this thats good or bad.

It's great to be a specialist on one hand and maybe it's just my personality type or something but I need an overall grasp as to understanding atleast the big picture. That said, just as I was leaving our someone pinged me about a "certificate" issue. Again, I HATE being seen as a specialist even myself because there are certain things I'm unable to understand much less do.

I read the request and it said the following in the logs (atleast they posted the logs and I didn't have to sift through them).


[size=9][1/5/09 13:29:24:946 CST] 000003c2 SystemOut O CWPKI0022E: SSL HANDSHAKE FAILURE: A signer with SubjectDN "CN=www.xxxxx.com, OU=Tech Ser
vices, O=NAIC, L=Kansas City, ST=Missouri, C=US" was sent from target host:port "apsp8462:1248". The signer may need to be added to local
trust store "/whokid/ktis/AppServer/config/cells/c1_cps_stg/trust.p12" located in SSL configuration alias "NodeDefaultSSLSetting
s" loaded from SSL configuration file "security.xml". The extended error message from the SSL handshake exception is: "No trusted certifica
te found".
[1/5/09 13:29:24:946 CST] 000003c2 SystemOut O
[1/5/09 13:29:25:403 CST] 000003c2 SystemOut O DISPATCH {
[1/5/09 13:29:25:403 CST] 000003c2 SystemOut O TWCDispatcher::dispatch() - Dispatch aborted because binding 'validate' returned fals
e. [/size]

I've seen a variation of that error before but I'm still NOT an expert at reading logs but I noticed something. What I personally LACK in overall understanding I have a strong troubleshooting ability. But we all know that only works for as much as what you understand and you just can't 'google' everything. But sure enough I checked around a few things (known culprits) and noticed that the certificate that this made a connection to had expired. Apparently when someone searches for something within this application it makes a backend connection to another database. Obviously that database needs a cert to make the connection seamlessly.

Now technically my job ends here. I could have said, "not an app server issue" which is wasn't. Now heres where my personal beefs with a developer comes in at. In my career I've seen a few types of developers

[b]Code geeks[/b] -guys who just love combing or creating code. They need to know what the code does and they can do it. Most will use reusable code, but some can do it all from scratch. These people are great except they usually don't have a great understanding of the overall business function of what they do.

I have figured out a name for this type but this type might not be the best coder but they know and understand most of the aspects of their code and WHATS it supposed to do as it relates to the business function it's supposed to accomplish.

I forget the PLENTIFUL of titles the people that manage these people are called but the good ones are former coders that are close enough to the code to understand and communicate to the business WHATS POSSIBLE and WHEN it's possible. In addition be able to communicate to their developers what the business needs. The problem is that very few of this type exist, if they do they've become "consultants" where its a pretty penny for their advice.....

That said back to my problem, I figured out (I'm not a coder nor do I even understand what the application does since I work with 500 plus apps)I figured out what it did and I done some digging. Rather than me going to some developer where english is his 5th language asking him to acquire the certificate I needed, I went and got it myself. I installed it and asked them to test and it worked.

Yeah I'm the hero but thats not the point. I'm mixed as to was all that even necessary if there was an overall understanding of this. Two hours was wasted for me to crack that down which could have taken 15 minutes. I guess you LIVE and LEARN through attrition but thats part my problem.

I don't have what seems like 40 fucking years to learn all this schit in. I guess like any lofty goal looking at it it seems INSURMOUNTABLE especially when I was talking to these programming gurus at my job about programming. I'm far from a dumbass but even I was mystified by what they were saying. I don't know if that was their communication style but it's like, "damn surely this stuff breaks down step by step" at some point.
Tue Jan 06, 2009 6:53 pm View user's profile Find all posts by Marz Send private message Send e-mail
bodom



Joined17 Jan 2002
Posts10653
LocationINDIANAPOLIS
Bank4294967295
Bones999999999.99 Bones
Game Trophies:  4
Hall Of Fame Member

Post Reply with quote
[quote="Marz"]I read the request and it said the following in the logs (atleast they posted the logs and I didn't have to sift through them).

[size=9][1/5/09 13:29:24:946 CST] 000003c2 SystemOut O CWPKI0022E: SSL HANDSHAKE FAILURE: A signer with SubjectDN "CN=www.xxxxx.com, OU=Tech Ser
vices, O=NAIC, L=Kansas City, ST=Missouri, C=US" was sent from target host:port "apsp8462:1248". The signer may need to be added to local
trust store "/whokid/ktis/AppServer/config/cells/c1_cps_stg/trust.p12" located in SSL configuration alias "NodeDefaultSSLSetting
s" loaded from SSL configuration file "security.xml". The extended error message from the SSL handshake exception is: "No trusted certifica
te found".
[1/5/09 13:29:24:946 CST] 000003c2 SystemOut O
[1/5/09 13:29:25:403 CST] 000003c2 SystemOut O DISPATCH {
[1/5/09 13:29:25:403 CST] 000003c2 SystemOut O TWCDispatcher::dispatch() - Dispatch aborted because binding 'validate' returned fals
e. [/size][/quote]
Every company differs with their logs. 000003c2 appears that it's the thread identifier. SystemOut is either the subsystem or the output stream. The host apsp8462 could not connect to port 1248 as it could not find the certificate to complete the two-way communication for the SSL layer.

I look through logs all day also. Here's an example of a SIP log in which faxes (both incoming and outgoing) are failure. The problem is that this is only happening on faxes on their Cisco gateways.

For whatever reason, when we establish communication from the remote end for a fax on the Cisco GW, it sends us back an IP of 0.0.0.0. Either the other side was muted somehow (someone put the remote end on hold somehow) or there is a configuration issue with the gateway (most likely, since none of these problems exist within faxes on their AudioCodes GW). But then we get another INVITE about 190 ms later, this time with an IP address, but a different port number. But we've already passed the bad packet to the FaxServer and the fax fails. There's no way to know that another INVITE is coming again.



blue = Tx. red = Rx.

[size=9][color=blue]09:26:54.286_4866[1d7c]SIPUDPTransport::transmit(): retry=0, handle=26, address=10.69.120.35:5060
INVITE sip:87275482739@10.69.120.35:5060 SIP/2.0
To: <sip>
From: "Fax Server" <sip>;tag=68
Via: SIP/2.0/UDP 10.13.102.40;branch=z9hG4bK0569cb8d9c5c0a31ab813cdc5
Call-ID: fb40a7ff933cbf1f1445e9dfc1eaf529@10.13.102.40
CSeq: 1 INVITE
Contact: <sip>
Max-Forwards: 70
ININCrn: 2001920004
Supported: join, replaces
User-Agent: ININ/2.400.10.13204
Allow: INVITE, BYE, ACK, CANCEL, OPTIONS, REFER, SUBSCRIBE, NOTIFY, MESSAGE, INFO
Accept: application/sdp
Accept-Encoding: identity
Content-Type: application/sdp
Content-Length: 197

v=0
o=ININ 4201578 4201578 IN IP4 10.13.102.40
s=Interaction
c=IN IP4 10.13.102.40
t=0 0
m=audio 49154 RTP/AVP 0 101
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
[/color]
[color=red]09:26:54.333_5136[4d4]SIPUDPTransport::MsgReadComplete(): remote=10.69.120.35:5060, message=
SIP/2.0 100 Trying
Date: Tue, 30 Dec 2008 15:33:28 GMT
From: "Fax Server" <sip>;tag=68
Allow-Events: presence
Content-Length: 0
To: <sip>
Call-ID: fb40a7ff933cbf1f1445e9dfc1eaf529@10.13.102.40
Via: SIP/2.0/UDP 10.13.102.40;branch=z9hG4bK0569cb8d9c5c0a31ab813cdc5
CSeq: 1 INVITE


09:26:54.536_5215[1b18]SIPUDPTransport::MsgReadComplete(): remote=10.69.120.35:5060, message=
SIP/2.0 180 Ringing
Date: Tue, 30 Dec 2008 15:33:28 GMT
Allow: INVITE, OPTIONS, INFO, BYE, CANCEL, ACK, PRACK, UPDATE, REFER, SUBSCRIBE, NOTIFY, PUBLISH
From: "Fax Server" <sip>;tag=68
Allow-Events: presence, kpml
Remote-Party-ID: <sip>;party=called;screen=yes;privacy=off
Content-Length: 211
To: <sip>;tag=0555da3d-fb7f-4a58-aeed-88dcf486bc8f-45519554
Contact: <sip>
Content-Type: application/sdp
Call-ID: fb40a7ff933cbf1f1445e9dfc1eaf529@10.13.102.40
Via: SIP/2.0/UDP 10.13.102.40;branch=z9hG4bK0569cb8d9c5c0a31ab813cdc5
CSeq: 1 INVITE

v=0
o=CiscoSystemsCCM-SIP 2000 1 IN IP4 10.69.120.35
s=SIP Call
c=IN IP4 10.69.120.8
t=0 0
m=audio 18584 RTP/AVP 0 101
a=rtpmap:0 PCMU/8000
a=ptime:20
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15

09:26:56.598_5660[1674]SIPUDPTransport::MsgReadComplete(): remote=10.69.120.35:5060, message=
SIP/2.0 200 OK
Date: Tue, 30 Dec 2008 15:33:28 GMT
Allow: INVITE, OPTIONS, INFO, BYE, CANCEL, ACK, PRACK, UPDATE, REFER, SUBSCRIBE, NOTIFY, PUBLISH
From: "Fax Server" <sip>;tag=68
Allow-Events: presence, kpml
Supported: replaces
Remote-Party-ID: <sip>;party=called;screen=yes;privacy=off
Content-Length: 211
To: <sip>;tag=0555da3d-fb7f-4a58-aeed-88dcf486bc8f-45519554
Contact: <sip>
Content-Type: application/sdp
Call-ID: fb40a7ff933cbf1f1445e9dfc1eaf529@10.13.102.40
Via: SIP/2.0/UDP 10.13.102.40;branch=z9hG4bK0569cb8d9c5c0a31ab813cdc5
CSeq: 1 INVITE

v=0
o=CiscoSystemsCCM-SIP 2000 1 IN IP4 10.69.120.35
s=SIP Call
c=IN IP4 10.69.120.8
t=0 0
m=audio 18584 RTP/AVP 0 101
a=rtpmap:0 PCMU/8000
a=ptime:20
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
[/color]
[color=blue]09:26:56.598_5859[1d7c]SIPUDPTransport::transmit(): retry=0, handle=27, address=10.69.120.35:5060
ACK sip:87275482739@10.69.120.35:5060 SIP/2.0
To: <sip>;tag=0555da3d-fb7f-4a58-aeed-88dcf486bc8f-45519554
From: "Fax Server" <sip>;tag=68
Call-ID: fb40a7ff933cbf1f1445e9dfc1eaf529@10.13.102.40
CSeq: 1 ACK
Via: SIP/2.0/UDP 10.13.102.40;branch=z9hG4bK6d911a435de294d5536db9105
Max-Forwards: 70
ININCrn: 2001920004
Supported: join, replaces
User-Agent: ININ/2.400.10.13204
Content-Length: 0
[/color]

[color=red]09:27:03.708_6414[1564]SIPUDPTransport::MsgReadComplete(): remote=10.69.120.35:5060, message=
INVITE sip:6880@10.13.102.40:5060 SIP/2.0
Date: Tue, 30 Dec 2008 15:33:37 GMT
Allow: INVITE, OPTIONS, INFO, BYE, CANCEL, ACK, PRACK, UPDATE, REFER, SUBSCRIBE, NOTIFY, PUBLISH
From: <sip>;tag=0555da3d-fb7f-4a58-aeed-88dcf486bc8f-45519554
Allow-Events: presence, kpml
Supported: timer,replaces
Min-SE: 1800
Remote-Party-ID: <sip>;party=calling;screen=yes;privacy=off
Cisco-Guid: 859642240-2510372680-17476-595084554
Content-Length: 356
User-Agent: Cisco-CUCM6.1
To: "Fax Server" <sip>;tag=68
Contact: <sip>
Expires: 180
Content-Type: application/sdp
Call-ID: fb40a7ff933cbf1f1445e9dfc1eaf529@10.13.102.40
Via: SIP/2.0/UDP 10.69.120.35:5060;branch=z9hG4bK8d6673044fb7
CSeq: 101 INVITE
Max-Forwards: 70

v=0
o=CiscoSystemsCCM-SIP 2000 2 IN IP4 10.69.120.35
s=SIP Call
[b]c=IN IP4 0.0.0.0 <----------------------------------------[/b]
t=0 0
m=image 16888 udptl t38
a=T38FaxVersion:0
a=T38MaxBitRate:14400
a=T38FaxFillBitRemoval:0
a=T38FaxTranscodingMMR:0
a=T38FaxTranscodingJBIG:0
a=T38FaxRateManagement:transferredTCF
a=T38FaxUdpEC:t38UDPRedundancy
a=T38FaxMaxBuffer:200
a=T38FaxMaxDatagram:72
[/color]
[color=blue]09:27:03.817_6546[1d7c]SIPUDPTransport::transmit(): retry=0, handle=28, address=10.69.120.35:5060
SIP/2.0 200 OK
To: "Fax Server" <sip>;tag=68
From: <sip>;tag=0555da3d-fb7f-4a58-aeed-88dcf486bc8f-45519554
Via: SIP/2.0/UDP 10.69.120.35:5060;branch=z9hG4bK8d6673044fb7
CSeq: 101 INVITE
Call-ID: fb40a7ff933cbf1f1445e9dfc1eaf529@10.13.102.40
Contact: "Fax Server" <sip>
User-Agent: ININ/2.400.10.13204
ININCrn: 2001920004
Content-Type: application/sdp
Content-Length: 231

v=0
o=ININ 4211109 4211109 IN IP4 10.13.102.40
s=Interaction
c=IN IP4 10.13.102.40
t=0 0
m=image 6000 udptl t38
a=T38FaxVersion:0
a=T38MaxBitRate:14400
a=T38FaxUdpEC:t38UDPRedundancy
a=T38FaxRateManagement:transferredTCF
[/color]
[color=red]09:27:03.848_6555[1bb8]SIPUDPTransport::MsgReadComplete(): remote=10.69.120.35:5060, message=
ACK sip:6880@10.13.102.40:5060 SIP/2.0
Date: Tue, 30 Dec 2008 15:33:37 GMT
From: <sip>;tag=0555da3d-fb7f-4a58-aeed-88dcf486bc8f-45519554
Allow-Events: presence, kpml
Content-Length: 0
To: "Fax Server" <sip>;tag=68
Call-ID: fb40a7ff933cbf1f1445e9dfc1eaf529@10.13.102.40
Via: SIP/2.0/UDP 10.69.120.35:5060;branch=z9hG4bK8d67360c4131
CSeq: 101 ACK
Max-Forwards: 70


09:27:03.895_6729[1348]SIPUDPTransport::MsgReadComplete(): remote=10.69.120.35:5060, message=
INVITE sip:6880@10.13.102.40:5060 SIP/2.0
Date: Tue, 30 Dec 2008 15:33:38 GMT
Allow: INVITE, OPTIONS, INFO, BYE, CANCEL, ACK, PRACK, UPDATE, REFER, SUBSCRIBE, NOTIFY, PUBLISH
From: <sip>;tag=0555da3d-fb7f-4a58-aeed-88dcf486bc8f-45519554
Allow-Events: presence, kpml
Supported: timer,replaces
Min-SE: 1800
Remote-Party-ID: <sip>;party=calling;screen=yes;privacy=off
Cisco-Guid: 859642240-2510372680-17476-595084554
Content-Length: 360
User-Agent: Cisco-CUCM6.1
To: "Fax Server" <sip>;tag=68
Contact: <sip>
Expires: 180
Content-Type: application/sdp
Call-ID: fb40a7ff933cbf1f1445e9dfc1eaf529@10.13.102.40
Via: SIP/2.0/UDP 10.69.120.35:5060;branch=z9hG4bK8d683e79a817
CSeq: 102 INVITE
Max-Forwards: 70

v=0
o=CiscoSystemsCCM-SIP 2000 3 IN IP4 10.69.120.35
s=SIP Call
[b]c=IN IP4 10.69.120.8 <----------------------------------------[/b]
t=0 0
m=image 19510 udptl t38
a=T38FaxVersion:0
a=T38MaxBitRate:14400
a=T38FaxFillBitRemoval:0
a=T38FaxTranscodingMMR:0
a=T38FaxTranscodingJBIG:0
a=T38FaxRateManagement:transferredTCF
a=T38FaxUdpEC:t38UDPRedundancy
a=T38FaxMaxBuffer:200
a=T38FaxMaxDatagram:72
[/color]
[color=blue]09:27:03.911_7110[1d7c]SIPUDPTransport::transmit(): retry=0, handle=29, address=10.69.120.35:5060
SIP/2.0 200 OK
To: "Fax Server" <sip>;tag=68
From: <sip>;tag=0555da3d-fb7f-4a58-aeed-88dcf486bc8f-45519554
Via: SIP/2.0/UDP 10.69.120.35:5060;branch=z9hG4bK8d683e79a817
CSeq: 102 INVITE
Call-ID: fb40a7ff933cbf1f1445e9dfc1eaf529@10.13.102.40
Contact: "Fax Server" <sip>
User-Agent: ININ/2.400.10.13204
ININCrn: 2001920004
Content-Type: application/sdp
Content-Length: 231

v=0
o=ININ 4211203 4211203 IN IP4 10.13.102.40
s=Interaction
c=IN IP4 10.13.102.40
t=0 0
m=image 6000 udptl t38
a=T38FaxVersion:0
a=T38MaxBitRate:14400
a=T38FaxUdpEC:t38UDPRedundancy
a=T38FaxRateManagement:transferredTCF
[/color]
[color=red]09:27:03.958_7161[15f4]SIPUDPTransport::MsgReadComplete(): remote=10.69.120.35:5060, message=
ACK sip:6880@10.13.102.40:5060 SIP/2.0
Date: Tue, 30 Dec 2008 15:33:38 GMT
From: <sip>;tag=0555da3d-fb7f-4a58-aeed-88dcf486bc8f-45519554
Allow-Events: presence, kpml
Content-Length: 0
To: "Fax Server" <sip>;tag=68
Call-ID: fb40a7ff933cbf1f1445e9dfc1eaf529@10.13.102.40
Via: SIP/2.0/UDP 10.69.120.35:5060;branch=z9hG4bK8d692527bca6
CSeq: 102 ACK
Max-Forwards: 70


09:27:45.677_7705[ba4]SIPUDPTransport::MsgReadComplete(): remote=10.69.120.35:5060, message=
BYE sip:6880@10.13.102.40:5060 SIP/2.0
Date: Tue, 30 Dec 2008 15:33:38 GMT
From: <sip>;tag=0555da3d-fb7f-4a58-aeed-88dcf486bc8f-45519554
Content-Length: 0
User-Agent: Cisco-CUCM6.1
To: "Fax Server" <sip>;tag=68
Call-ID: fb40a7ff933cbf1f1445e9dfc1eaf529@10.13.102.40
Via: SIP/2.0/UDP 10.69.120.35:5060;branch=z9hG4bK8d6aaa119d4
CSeq: 103 BYE
Max-Forwards: 70
[/color]

[color=blue]09:27:45.693_7759[1d7c]SIPUDPTransport::transmit(): retry=0, handle=30, address=10.69.120.35:5060
SIP/2.0 200 OK
To: "Fax Server" <sip>;tag=68
From: <sip>;tag=0555da3d-fb7f-4a58-aeed-88dcf486bc8f-45519554
Via: SIP/2.0/UDP 10.69.120.35:5060;branch=z9hG4bK8d6aaa119d4
CSeq: 103 BYE
Call-ID: fb40a7ff933cbf1f1445e9dfc1eaf529@10.13.102.40
Contact: "Fax Server" <sip>
User-Agent: ININ/2.400.10.13204
ININCrn: 2001920004
Content-Length: 0

[/color]
[/size]

[quote="Marz"]I've seen a variation of that error before but I'm still NOT an expert at reading logs but I noticed something. What I personally LACK in overall understanding I have a strong troubleshooting ability.[/quote]
This is where I excel. I admit to not knowing much, but if someone's broken, I can work backwards and narrow things down. Once I pinpoint the issue, then I can go from there. I work in support, so it's a requirement to dig through logs and troubleshoot a wide variety of things. Can I code up my own SIP stack and make calls at home? No.

[quote="Marz"]But we all know that only works for as much as what you understand and you just can't 'google' everything. But sure enough I checked around a few things (known culprits) and noticed that the certificate that this made a connection to had expired. Apparently when someone searches for something within this application it makes a backend connection to another database. Obviously that database needs a cert to make the connection seamlessly.[/quote]
There's no google on how to read logs. You just have to do it and learn by trial and error. And some people can "see" stuff better than others. That's just the way it is. That's a skill on its own.

[quote="Marz"]Now technically my job ends here. I could have said, "not an app server issue" which is wasn't. Now heres where my personal beefs with a developer comes in at. In my career I've seen a few types of developers[/quote]
My role goes one level deeper. If I identify the problem and it is an issue with our software and within the section of code I'm responsible for, then I have to code up a fix. If it's third party like Dialogic, Aculab, Polycom, AudioCodes, etc, then it's up to me to open up a ticket with these people. I mostly deal with Dialogic, whereas other people deal with other vendors.

[quote="Marz"][b]Code geeks[/b] -guys who just love combing or creating code. They need to know what the code does and they can do it. Most will use reusable code, but some can do it all from scratch. These people are great except they usually don't have a great understanding of the overall business function of what they do. [/quote]
It all depends on what the code monkey can say. Some people really can code and understand their schit, but it's hard as hell when you have to go to them and have them explain what's going on. Some of them aren't the best communicators. And then you have some who do this intentionally because now you're a threat to them feeding their family... Rolling Eyes

[quote="Marz"]That said back to my problem, I figured out (I'm not a coder nor do I even understand what the application does since I work with 500 plus apps)I figured out what it did and I done some digging. Rather than me going to some developer where english is his 5th language asking him to acquire the certificate I needed, I went and got it myself. I installed it and asked them to test and it worked. [/quote]
Good job. And with the developer bogged down, it would have taken a long time to even get a response back, if he responds at all. That's what you have to do. You have to be a good troubleshooter, but also once you're stuck, you have to figure out a lot of schit on your own and can't depend 100% on someone for your solution. To even approach these people, you need to have everything drawn out. You can't just go to the developer and say, "This SSL layer is broke". But you know this.

[quote="Marz"]Yeah I'm the hero but thats not the point. I'm mixed as to was all that even necessary if there was an overall understanding of this. Two hours was wasted for me to crack that down which could have taken 15 minutes. I guess you LIVE and LEARN through attrition but thats part my problem.[/quote]
I waste a lot of time of BS too. Right now, my test machine is broke and this is slowing me down right now. So I have to troubleshoot my own box. And I have two important fixes to get out. I have an idea on one of them, but I'm wasting so much time to try to get my box working to reproduce the issue.

[quote="Marz"]I don't have what seems like 40 fucking years to learn all this schit in. I guess like any lofty goal looking at it it seems INSURMOUNTABLE especially when I was talking to these programming gurus at my job about programming. I'm far from a dumbass but even I was mystified by what they were saying. I don't know if that was their communication style but it's like, "damn surely this stuff breaks down step by step" at some point.[/quote]
I'm still mystified with a lot of the schit that goes on here. Believe me, I don't understand a good majority of it. It breaks down step by step at some point once you get the basic building blocks.
Tue Jan 06, 2009 11:15 pm View user's profile Find all posts by bodom Send private message AIM Address Yahoo Messenger MSN Messenger ICQ Number
Horse



Joined19 Mar 2002
Posts9626
Bank0
Bones73234.78 Bones

Post Reply with quote
I really fell for both of you guys... Laughing

I've been there and I really feel your pain.



When I had to decipher log files I would look for common patterns..

Usually you can narrow it down to a section, keyword in the log file where a majority of the errors occur..

I would then automate the sifting through and the log file by creating a Unix Script, or use AWK, grep, perl or some combination of them all.

My sh* was so tight my error checker script would be kicked off by Cron, sift through the log file looking for patterns and then send me a email when it found the problem.

Of course, you then had to know what to do with the error...

Like a dog chasing a car and the car finally stops...wtf to do now... Laughing Laughing

..but sometimes you can also automate the fix


I never liked wasting time and if I had to do it more than once, I would write a script..

Actually Othr... turned me on to automated scripts back in 90's..

Now you have Alerts but I would rather write my own Alert..

A script can get you either to the right section, or put you somewhere in the neighborhood.

fukkk all that manual labor.

There is a great book on Life patterns that applies to just about everything you do at work or outside of the job..
The lesson of course, don't recreate the wheel, look for a tried and proven pattern.

I wish I could remember the name..it's a good read.

Times have changed since my days of reading and creating logs and I know things are more dynamic, but the patterns are there somewhere, you just have to search harder...
Wed Jan 07, 2009 1:12 am View user's profile Find all posts by Horse Send private message
bodom



Joined17 Jan 2002
Posts10653
LocationINDIANAPOLIS
Bank4294967295
Bones999999999.99 Bones
Game Trophies:  4
Hall Of Fame Member

Post Reply with quote
[quote="Horse"]When I had to decipher log files I would look for common patterns..

Usually you can narrow it down to a section, keyword in the log file where a majority of the errors occur..[/quote]
There's a really bright guy at my job who wrote his own log filter program. We all use it at work and since he coded it on the side, he makes a buttload of money for doing so.

http://www.regallogic.com/

It saves a lot of time with its filtering and its slick indexing. It chews through large log files FAST (we have log files around 1.8Gb). Ever have to sit forever waiting for a 100Mb text file to open? Or wait damn near an hour for Ethereal/Wireshark to open up a 600Mb capture?

[quote="Horse"]I would then automate the sifting through and the log file by creating a Unix Script, or use AWK, grep, perl or some combination of them all.[/quote]
With our logs being binary, people tend to use ruby to write all their scripts.

[quote="Horse"]My sh* was so tight my error checker script would be kicked off by Cron, sift through the log file looking for patterns and then send me a email when it found the problem.

Of course, you then had to know what to do with the error...[/quote]
That's when regular expressions can do some powerful work... Most of our problems don't involve errors. If a call is stuck or a thread is frozen, or something plain doesn't work right, good luck writing a script for that.
Wed Jan 07, 2009 2:13 am View user's profile Find all posts by bodom Send private message AIM Address Yahoo Messenger MSN Messenger ICQ Number
Horse



Joined19 Mar 2002
Posts9626
Bank0
Bones73234.78 Bones

Post Reply with quote
[quote="Horse"]My sh* was so tight my error checker script would be kicked off by Cron, sift through the log file looking for patterns and then send me a email when it found the problem.

Of course, you then had to know what to do with the error...
That's when regular expressions can do some powerful work... Most of our problems don't involve errors. If a call is stuck or a thread is frozen, or something plain doesn't work right, good luck writing a script for that.[/quote]

You would pull your hair out writing that script.. Very Happy Very Happy

I do believe though a frozen thread or something not working is considered an error ..and there are ways to code and check for that...
Very Happy

Locked threads can hurt revenue, call volume or cause a user/client to switch to a competitor that does not have as many errors.

The app. that I recently wrote deals with real time information from Gov't satellites (life or death situation)... it has to work and work everytime..it can't go down.. and so one way around that is through redundancy, callbacks and
adhering to age ol KISS principle...
I've found in my short career, if its overly complicated...then it usually coded incorrectly or by someone that wanted job security.


I'll have to check out the link you put up...and send it to a few people.

thanks
Wed Jan 07, 2009 2:48 am View user's profile Find all posts by Horse Send private message
dexxtreme



Joined17 Jan 2002
Posts3406
LocationThe Alamo
Bank4294967295
Bones11701.78 Bones
Game Trophies:  1
Hall Of Fame Member

Post Reply with quote
Fortunately I don't have to parse through log files. Unfortunately, I do have to parse through data stored in 6 remote databases in 4 different cities with different database schemas, different people managing them, different amounts of available data, and different levels of table sophistication. I then parse through it for changes, merge the results into a seventh database (which also runs the main web interface for the entire system), import and export some of that data to 3 more remote databases, and build config files for two different monitoring systems. (It is a server equipment location database that integrates into the traffic and bandwidth monitoring systems that I built for it.) There are half a dozen maintenance scripts that run throughout the day every 4 or 6 hours (depending on the script) to keep all of the data synchronized. (It also sends me a text message when there is a problem with one of the imports or exports.) With so many front-end and back-end scripts and modules to keep track of, I have had to focus hard on templating and heavy code re-use. (Any snippet of code that gets used more than 2 times gets shoved into a function.) I haven't had to write any threaded code, however. There is little that can be parallelized in my code since it is almost all fairly sequential in nature (and for the most part the web server handles the concurrency just fine).
Wed Jan 07, 2009 12:58 pm View user's profile Find all posts by dexxtreme Send private message Visit poster's website AIM Address Yahoo Messenger
TROUBLEMAN69



Joined18 Jan 2002
Posts6028
Bank4294967295
Bones3201.72 Bones

Post Reply with quote
Keep it coming. I have taken a few java courses, but never applied it.
Wed Jan 07, 2009 3:20 pm View user's profile Find all posts by TROUBLEMAN69 Send private message AIM Address
Marz



Joined10 Jul 2003
Posts30659
Bank4294967295
Bones546240.93 Bones

Post Reply with quote
Unfortunately (Dexx), your post was harder to read than Bodom's log files due to the lack of paragraph spacing,lol.

I feel you all though. The log files reader bodom posted is cool. We use Compuware and there is an IBM tool that does the same. It makes the log files much easier to read and understand.

I want to add more but I have to get to work..
Wed Jan 07, 2009 3:46 pm View user's profile Find all posts by Marz Send private message Send e-mail
Horse



Joined19 Mar 2002
Posts9626
Bank0
Bones73234.78 Bones

Post Reply with quote
Hey Dexx, I was at a site once and they had a ETL tool doing some of the things you describe..

I think Microsoft’s ETL bundle can now do low level unix scripts, move data back and forth and send out alarms.

The funny thing is that when things break, you can really tell a Old School guy from a newbie..

The old school guy is using the tool against every fiber in his body but knows how to log on to unix and run commands to figure out what is going on.

The new school guys freak out when something breaks and have little db, unix or any other skills... They can run the hell out of that tool though...

For those that want to learn Java,XML,etc past the 'hello world' program... then a good place start is by volunteering for some of the popular Open Source Projects..

Apache has so many projects that all you have to do is pick out what you want to learn...Here is the link

http://www.apache.org/foundation/getinvolved.html

You get credit and noticed by your peers when they release the product..
Wed Jan 07, 2009 5:30 pm View user's profile Find all posts by Horse Send private message
Marz



Joined10 Jul 2003
Posts30659
Bank4294967295
Bones546240.93 Bones

Post Reply with quote
http://news.google.com/news?pz=1&ned=us&num=30&ncl=1316664214

This is a bombshell. Horsenutts, what do you think of this since you have the most experience in the app server world.

Heres what I see. IBM can now have an even bigger influence into java code with things being steer more closely to WAS as the container.

If I'm JBOSS and/Web Logic, I'm PISSED.

Thoughts
Thu Mar 19, 2009 6:03 pm View user's profile Find all posts by Marz Send private message Send e-mail
caliborn



Joined07 Aug 2002
Posts266
Bank4294967295
Bones622.86 Bones

Post Reply with quote
I've been reading most of the morning and trying to figure what would IBM want with Sun....there's an awful lot of redundancy wherever you look....OS, Servers, Apps, even Markets....

Hmmmm
Thu Mar 19, 2009 8:45 pm View user's profile Find all posts by caliborn Send private message
Display posts from previous:    

Reply to topic    Afrocentric Online Forum Index » The Matrix All times are GMT + 1 Hour
Goto page 1, 2  Next
Page 1 of 2

 
Jump to: 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group
Design by Freestyle XL / Flowers Online.