You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@trafodion.apache.org by Dave Birdsall <da...@esgyn.com> on 2017/01/25 17:37:52 UTC

Using hook to debug Trafodion processes

Hi,

I need to debug an issue in tdm_arkcmp that may occur very early in its processing.

I remember we had a technique called "hook" which caused any SeaQuest process to wait until a particular file exists. The way it works was, you'd set HOOK_ENABLE=1 in your $TRAF_HOME/etc/ms.env file and restart your instance.

Then, every process instrumented with a msg_debug_hook call in it would block until the file named in the call existed. So, for example, the main for tdm_arkcmp.cpp (in core/sql/bin/arkcmp.cpp) has msg_debug_hook("arkcmp", "ark.hook"); so tdm_arkcmp will block until the file ark.hook exists.

I remember that in earlier versions of the code a collection of *.hook files were present in the source distribution. These seem to be gone now; I cannot find them.

I tried this yesterday, and sqstart doesn't complete. The probable reason is one or more of the processes that fire up at sqstart time has a msg_debug_hook call.

Now the question:

Does anyone know off the top of their head the complete set of *.hook calls? Also, what directory does msg_debug_hook look into to find these files?

I'll update the Trafodion wiki with this information once I have the complete story.

Thanks,

Dave

RE: Using hook to debug Trafodion processes

Posted by Dave Birdsall <da...@esgyn.com>.
Hi,

You can find this info on the wiki here: https://cwiki.apache.org/confluence/display/TRAFODION/Debugging+Tips#DebuggingTips-TrafodionProcessDebugHooks

Feel free to correct and update as you see fit.

Dave

-----Original Message-----
From: Dave Birdsall 
Sent: Wednesday, January 25, 2017 10:04 AM
To: dev@trafodion.incubator.apache.org
Subject: RE: Using hook to debug Trafodion processes

Hi,

Thanks, Narendra! I'll add this info to the wiki.

Dave

-----Original Message-----
From: Narendra Goyal [mailto:narendra.goyal@esgyn.com] 
Sent: Wednesday, January 25, 2017 10:02 AM
To: dev@trafodion.incubator.apache.org
Subject: RE: Using hook to debug Trafodion processes

Hi Dave,

The cwd directory of most processes started by sqstart is $MY_SQROOT/sql/scripts.

But mxosrvr's is $MY_SQROOT

Also these two files in $MY_SQROOT/sql/scripts to create/delete all the hook files (for debugging):
- createhooks
- delhooks

Thanks,
-Narendra

-----Original Message-----
From: Dave Birdsall [mailto:dave.birdsall@esgyn.com] 
Sent: Wednesday, January 25, 2017 9:59 AM
To: dev@trafodion.incubator.apache.org
Subject: RE: Using hook to debug Trafodion processes

Hi,

I looked at the code for msg_debug_hook. (It's in $TRAF_HOME/src/seabed/src/ms.cpp.)

It uses getcwd to determine what directory to look into.

So, if I start sqlci, then sqlci.hook needs to be in my current working directory in order for sqlci to continue.

I wonder what the current working directory is for processes started by sqstart?

Thanks,

Dave


-----Original Message-----
From: Dave Birdsall [mailto:dave.birdsall@esgyn.com] 
Sent: Wednesday, January 25, 2017 9:47 AM
To: dev@trafodion.incubator.apache.org
Subject: RE: Using hook to debug Trafodion processes

Hi,

I did some grepping around the Trafodion code and came up with this list of hook files. (There are a lot of others but they seem to be associated with test programs.)

Does this look right?

Dave

./core/sqf/src/seabed/src/fs.cpp:    msg_debug_hook(pp_who, pp_fname);
./core/sqf/src/stfs/common/stfs_util.cpp:    msg_debug_hook("STFS", "stfs.hook");
./core/sqf/src/tm/tm.cpp:    msg_debug_hook ("tm.hook", "tm.hook");
./core/sqf/src/tm/idtmsrv.cpp:        msg_debug_hook("s", "s");
./core/sql/common/memtest.cpp:    msg_debug_hook("memtest", "memtest.hook");
./core/sql/qms/QmpMain.cpp:    msg_debug_hook("tdm_arkqmp", "tdm_arkqmp.hook");
./core/sql/qms/QmmMain.cpp:    msg_debug_hook("tdm_arkqmm", "tdm_arkqmm.hook");
./core/sql/qms/QmsMain.cpp:    msg_debug_hook("tdm_arkqms", "tdm_arkqms.hook");
./core/sql/bin/ex_esp_main.cpp:  msg_debug_hook("arkesp", "esp.hook");
./core/sql/bin/SqlciMain.cpp:    msg_debug_hook("sqlci", "sqlci.hook");
./core/sql/bin/ex_sscp_main.cpp:  msg_debug_hook("mxsscp", "mxsscp.hook");
./core/sql/bin/arkcmp.cpp:    msg_debug_hook("arkcmp", "ark.hook");
./core/sql/bin/ex_ssmp_main.cpp:  msg_debug_hook("mxssmp", "mxssmp.hook");
./core/sql/bin/mpisetup.cpp:    msg_debug_hook("NGG", "ngg.hook");


-----Original Message-----
From: Dave Birdsall [mailto:dave.birdsall@esgyn.com] 
Sent: Wednesday, January 25, 2017 9:38 AM
To: dev@trafodion.incubator.apache.org
Subject: Using hook to debug Trafodion processes

Hi,

I need to debug an issue in tdm_arkcmp that may occur very early in its processing.

I remember we had a technique called "hook" which caused any SeaQuest process to wait until a particular file exists. The way it works was, you'd set HOOK_ENABLE=1 in your $TRAF_HOME/etc/ms.env file and restart your instance.

Then, every process instrumented with a msg_debug_hook call in it would block until the file named in the call existed. So, for example, the main for tdm_arkcmp.cpp (in core/sql/bin/arkcmp.cpp) has msg_debug_hook("arkcmp", "ark.hook"); so tdm_arkcmp will block until the file ark.hook exists.

I remember that in earlier versions of the code a collection of *.hook files were present in the source distribution. These seem to be gone now; I cannot find them.

I tried this yesterday, and sqstart doesn't complete. The probable reason is one or more of the processes that fire up at sqstart time has a msg_debug_hook call.

Now the question:

Does anyone know off the top of their head the complete set of *.hook calls? Also, what directory does msg_debug_hook look into to find these files?

I'll update the Trafodion wiki with this information once I have the complete story.

Thanks,

Dave

RE: Using hook to debug Trafodion processes

Posted by Dave Birdsall <da...@esgyn.com>.
Hi,

Thanks, Narendra! I'll add this info to the wiki.

Dave

-----Original Message-----
From: Narendra Goyal [mailto:narendra.goyal@esgyn.com] 
Sent: Wednesday, January 25, 2017 10:02 AM
To: dev@trafodion.incubator.apache.org
Subject: RE: Using hook to debug Trafodion processes

Hi Dave,

The cwd directory of most processes started by sqstart is $MY_SQROOT/sql/scripts.

But mxosrvr's is $MY_SQROOT

Also these two files in $MY_SQROOT/sql/scripts to create/delete all the hook files (for debugging):
- createhooks
- delhooks

Thanks,
-Narendra

-----Original Message-----
From: Dave Birdsall [mailto:dave.birdsall@esgyn.com] 
Sent: Wednesday, January 25, 2017 9:59 AM
To: dev@trafodion.incubator.apache.org
Subject: RE: Using hook to debug Trafodion processes

Hi,

I looked at the code for msg_debug_hook. (It's in $TRAF_HOME/src/seabed/src/ms.cpp.)

It uses getcwd to determine what directory to look into.

So, if I start sqlci, then sqlci.hook needs to be in my current working directory in order for sqlci to continue.

I wonder what the current working directory is for processes started by sqstart?

Thanks,

Dave


-----Original Message-----
From: Dave Birdsall [mailto:dave.birdsall@esgyn.com] 
Sent: Wednesday, January 25, 2017 9:47 AM
To: dev@trafodion.incubator.apache.org
Subject: RE: Using hook to debug Trafodion processes

Hi,

I did some grepping around the Trafodion code and came up with this list of hook files. (There are a lot of others but they seem to be associated with test programs.)

Does this look right?

Dave

./core/sqf/src/seabed/src/fs.cpp:    msg_debug_hook(pp_who, pp_fname);
./core/sqf/src/stfs/common/stfs_util.cpp:    msg_debug_hook("STFS", "stfs.hook");
./core/sqf/src/tm/tm.cpp:    msg_debug_hook ("tm.hook", "tm.hook");
./core/sqf/src/tm/idtmsrv.cpp:        msg_debug_hook("s", "s");
./core/sql/common/memtest.cpp:    msg_debug_hook("memtest", "memtest.hook");
./core/sql/qms/QmpMain.cpp:    msg_debug_hook("tdm_arkqmp", "tdm_arkqmp.hook");
./core/sql/qms/QmmMain.cpp:    msg_debug_hook("tdm_arkqmm", "tdm_arkqmm.hook");
./core/sql/qms/QmsMain.cpp:    msg_debug_hook("tdm_arkqms", "tdm_arkqms.hook");
./core/sql/bin/ex_esp_main.cpp:  msg_debug_hook("arkesp", "esp.hook");
./core/sql/bin/SqlciMain.cpp:    msg_debug_hook("sqlci", "sqlci.hook");
./core/sql/bin/ex_sscp_main.cpp:  msg_debug_hook("mxsscp", "mxsscp.hook");
./core/sql/bin/arkcmp.cpp:    msg_debug_hook("arkcmp", "ark.hook");
./core/sql/bin/ex_ssmp_main.cpp:  msg_debug_hook("mxssmp", "mxssmp.hook");
./core/sql/bin/mpisetup.cpp:    msg_debug_hook("NGG", "ngg.hook");


-----Original Message-----
From: Dave Birdsall [mailto:dave.birdsall@esgyn.com] 
Sent: Wednesday, January 25, 2017 9:38 AM
To: dev@trafodion.incubator.apache.org
Subject: Using hook to debug Trafodion processes

Hi,

I need to debug an issue in tdm_arkcmp that may occur very early in its processing.

I remember we had a technique called "hook" which caused any SeaQuest process to wait until a particular file exists. The way it works was, you'd set HOOK_ENABLE=1 in your $TRAF_HOME/etc/ms.env file and restart your instance.

Then, every process instrumented with a msg_debug_hook call in it would block until the file named in the call existed. So, for example, the main for tdm_arkcmp.cpp (in core/sql/bin/arkcmp.cpp) has msg_debug_hook("arkcmp", "ark.hook"); so tdm_arkcmp will block until the file ark.hook exists.

I remember that in earlier versions of the code a collection of *.hook files were present in the source distribution. These seem to be gone now; I cannot find them.

I tried this yesterday, and sqstart doesn't complete. The probable reason is one or more of the processes that fire up at sqstart time has a msg_debug_hook call.

Now the question:

Does anyone know off the top of their head the complete set of *.hook calls? Also, what directory does msg_debug_hook look into to find these files?

I'll update the Trafodion wiki with this information once I have the complete story.

Thanks,

Dave

RE: Using hook to debug Trafodion processes

Posted by Narendra Goyal <na...@esgyn.com>.
Hi Dave,

The cwd directory of most processes started by sqstart is $MY_SQROOT/sql/scripts.

But mxosrvr's is $MY_SQROOT

Also these two files in $MY_SQROOT/sql/scripts to create/delete all the hook files (for debugging):
- createhooks
- delhooks

Thanks,
-Narendra

-----Original Message-----
From: Dave Birdsall [mailto:dave.birdsall@esgyn.com] 
Sent: Wednesday, January 25, 2017 9:59 AM
To: dev@trafodion.incubator.apache.org
Subject: RE: Using hook to debug Trafodion processes

Hi,

I looked at the code for msg_debug_hook. (It's in $TRAF_HOME/src/seabed/src/ms.cpp.)

It uses getcwd to determine what directory to look into.

So, if I start sqlci, then sqlci.hook needs to be in my current working directory in order for sqlci to continue.

I wonder what the current working directory is for processes started by sqstart?

Thanks,

Dave


-----Original Message-----
From: Dave Birdsall [mailto:dave.birdsall@esgyn.com] 
Sent: Wednesday, January 25, 2017 9:47 AM
To: dev@trafodion.incubator.apache.org
Subject: RE: Using hook to debug Trafodion processes

Hi,

I did some grepping around the Trafodion code and came up with this list of hook files. (There are a lot of others but they seem to be associated with test programs.)

Does this look right?

Dave

./core/sqf/src/seabed/src/fs.cpp:    msg_debug_hook(pp_who, pp_fname);
./core/sqf/src/stfs/common/stfs_util.cpp:    msg_debug_hook("STFS", "stfs.hook");
./core/sqf/src/tm/tm.cpp:    msg_debug_hook ("tm.hook", "tm.hook");
./core/sqf/src/tm/idtmsrv.cpp:        msg_debug_hook("s", "s");
./core/sql/common/memtest.cpp:    msg_debug_hook("memtest", "memtest.hook");
./core/sql/qms/QmpMain.cpp:    msg_debug_hook("tdm_arkqmp", "tdm_arkqmp.hook");
./core/sql/qms/QmmMain.cpp:    msg_debug_hook("tdm_arkqmm", "tdm_arkqmm.hook");
./core/sql/qms/QmsMain.cpp:    msg_debug_hook("tdm_arkqms", "tdm_arkqms.hook");
./core/sql/bin/ex_esp_main.cpp:  msg_debug_hook("arkesp", "esp.hook");
./core/sql/bin/SqlciMain.cpp:    msg_debug_hook("sqlci", "sqlci.hook");
./core/sql/bin/ex_sscp_main.cpp:  msg_debug_hook("mxsscp", "mxsscp.hook");
./core/sql/bin/arkcmp.cpp:    msg_debug_hook("arkcmp", "ark.hook");
./core/sql/bin/ex_ssmp_main.cpp:  msg_debug_hook("mxssmp", "mxssmp.hook");
./core/sql/bin/mpisetup.cpp:    msg_debug_hook("NGG", "ngg.hook");


-----Original Message-----
From: Dave Birdsall [mailto:dave.birdsall@esgyn.com] 
Sent: Wednesday, January 25, 2017 9:38 AM
To: dev@trafodion.incubator.apache.org
Subject: Using hook to debug Trafodion processes

Hi,

I need to debug an issue in tdm_arkcmp that may occur very early in its processing.

I remember we had a technique called "hook" which caused any SeaQuest process to wait until a particular file exists. The way it works was, you'd set HOOK_ENABLE=1 in your $TRAF_HOME/etc/ms.env file and restart your instance.

Then, every process instrumented with a msg_debug_hook call in it would block until the file named in the call existed. So, for example, the main for tdm_arkcmp.cpp (in core/sql/bin/arkcmp.cpp) has msg_debug_hook("arkcmp", "ark.hook"); so tdm_arkcmp will block until the file ark.hook exists.

I remember that in earlier versions of the code a collection of *.hook files were present in the source distribution. These seem to be gone now; I cannot find them.

I tried this yesterday, and sqstart doesn't complete. The probable reason is one or more of the processes that fire up at sqstart time has a msg_debug_hook call.

Now the question:

Does anyone know off the top of their head the complete set of *.hook calls? Also, what directory does msg_debug_hook look into to find these files?

I'll update the Trafodion wiki with this information once I have the complete story.

Thanks,

Dave

RE: Using hook to debug Trafodion processes

Posted by Dave Birdsall <da...@esgyn.com>.
Hi,

I looked at the code for msg_debug_hook. (It's in $TRAF_HOME/src/seabed/src/ms.cpp.)

It uses getcwd to determine what directory to look into.

So, if I start sqlci, then sqlci.hook needs to be in my current working directory in order for sqlci to continue.

I wonder what the current working directory is for processes started by sqstart?

Thanks,

Dave


-----Original Message-----
From: Dave Birdsall [mailto:dave.birdsall@esgyn.com] 
Sent: Wednesday, January 25, 2017 9:47 AM
To: dev@trafodion.incubator.apache.org
Subject: RE: Using hook to debug Trafodion processes

Hi,

I did some grepping around the Trafodion code and came up with this list of hook files. (There are a lot of others but they seem to be associated with test programs.)

Does this look right?

Dave

./core/sqf/src/seabed/src/fs.cpp:    msg_debug_hook(pp_who, pp_fname);
./core/sqf/src/stfs/common/stfs_util.cpp:    msg_debug_hook("STFS", "stfs.hook");
./core/sqf/src/tm/tm.cpp:    msg_debug_hook ("tm.hook", "tm.hook");
./core/sqf/src/tm/idtmsrv.cpp:        msg_debug_hook("s", "s");
./core/sql/common/memtest.cpp:    msg_debug_hook("memtest", "memtest.hook");
./core/sql/qms/QmpMain.cpp:    msg_debug_hook("tdm_arkqmp", "tdm_arkqmp.hook");
./core/sql/qms/QmmMain.cpp:    msg_debug_hook("tdm_arkqmm", "tdm_arkqmm.hook");
./core/sql/qms/QmsMain.cpp:    msg_debug_hook("tdm_arkqms", "tdm_arkqms.hook");
./core/sql/bin/ex_esp_main.cpp:  msg_debug_hook("arkesp", "esp.hook");
./core/sql/bin/SqlciMain.cpp:    msg_debug_hook("sqlci", "sqlci.hook");
./core/sql/bin/ex_sscp_main.cpp:  msg_debug_hook("mxsscp", "mxsscp.hook");
./core/sql/bin/arkcmp.cpp:    msg_debug_hook("arkcmp", "ark.hook");
./core/sql/bin/ex_ssmp_main.cpp:  msg_debug_hook("mxssmp", "mxssmp.hook");
./core/sql/bin/mpisetup.cpp:    msg_debug_hook("NGG", "ngg.hook");


-----Original Message-----
From: Dave Birdsall [mailto:dave.birdsall@esgyn.com] 
Sent: Wednesday, January 25, 2017 9:38 AM
To: dev@trafodion.incubator.apache.org
Subject: Using hook to debug Trafodion processes

Hi,

I need to debug an issue in tdm_arkcmp that may occur very early in its processing.

I remember we had a technique called "hook" which caused any SeaQuest process to wait until a particular file exists. The way it works was, you'd set HOOK_ENABLE=1 in your $TRAF_HOME/etc/ms.env file and restart your instance.

Then, every process instrumented with a msg_debug_hook call in it would block until the file named in the call existed. So, for example, the main for tdm_arkcmp.cpp (in core/sql/bin/arkcmp.cpp) has msg_debug_hook("arkcmp", "ark.hook"); so tdm_arkcmp will block until the file ark.hook exists.

I remember that in earlier versions of the code a collection of *.hook files were present in the source distribution. These seem to be gone now; I cannot find them.

I tried this yesterday, and sqstart doesn't complete. The probable reason is one or more of the processes that fire up at sqstart time has a msg_debug_hook call.

Now the question:

Does anyone know off the top of their head the complete set of *.hook calls? Also, what directory does msg_debug_hook look into to find these files?

I'll update the Trafodion wiki with this information once I have the complete story.

Thanks,

Dave

RE: Using hook to debug Trafodion processes

Posted by Dave Birdsall <da...@esgyn.com>.
Hi,

I did some grepping around the Trafodion code and came up with this list of hook files. (There are a lot of others but they seem to be associated with test programs.)

Does this look right?

Dave

./core/sqf/src/seabed/src/fs.cpp:    msg_debug_hook(pp_who, pp_fname);
./core/sqf/src/stfs/common/stfs_util.cpp:    msg_debug_hook("STFS", "stfs.hook");
./core/sqf/src/tm/tm.cpp:    msg_debug_hook ("tm.hook", "tm.hook");
./core/sqf/src/tm/idtmsrv.cpp:        msg_debug_hook("s", "s");
./core/sql/common/memtest.cpp:    msg_debug_hook("memtest", "memtest.hook");
./core/sql/qms/QmpMain.cpp:    msg_debug_hook("tdm_arkqmp", "tdm_arkqmp.hook");
./core/sql/qms/QmmMain.cpp:    msg_debug_hook("tdm_arkqmm", "tdm_arkqmm.hook");
./core/sql/qms/QmsMain.cpp:    msg_debug_hook("tdm_arkqms", "tdm_arkqms.hook");
./core/sql/bin/ex_esp_main.cpp:  msg_debug_hook("arkesp", "esp.hook");
./core/sql/bin/SqlciMain.cpp:    msg_debug_hook("sqlci", "sqlci.hook");
./core/sql/bin/ex_sscp_main.cpp:  msg_debug_hook("mxsscp", "mxsscp.hook");
./core/sql/bin/arkcmp.cpp:    msg_debug_hook("arkcmp", "ark.hook");
./core/sql/bin/ex_ssmp_main.cpp:  msg_debug_hook("mxssmp", "mxssmp.hook");
./core/sql/bin/mpisetup.cpp:    msg_debug_hook("NGG", "ngg.hook");


-----Original Message-----
From: Dave Birdsall [mailto:dave.birdsall@esgyn.com] 
Sent: Wednesday, January 25, 2017 9:38 AM
To: dev@trafodion.incubator.apache.org
Subject: Using hook to debug Trafodion processes

Hi,

I need to debug an issue in tdm_arkcmp that may occur very early in its processing.

I remember we had a technique called "hook" which caused any SeaQuest process to wait until a particular file exists. The way it works was, you'd set HOOK_ENABLE=1 in your $TRAF_HOME/etc/ms.env file and restart your instance.

Then, every process instrumented with a msg_debug_hook call in it would block until the file named in the call existed. So, for example, the main for tdm_arkcmp.cpp (in core/sql/bin/arkcmp.cpp) has msg_debug_hook("arkcmp", "ark.hook"); so tdm_arkcmp will block until the file ark.hook exists.

I remember that in earlier versions of the code a collection of *.hook files were present in the source distribution. These seem to be gone now; I cannot find them.

I tried this yesterday, and sqstart doesn't complete. The probable reason is one or more of the processes that fire up at sqstart time has a msg_debug_hook call.

Now the question:

Does anyone know off the top of their head the complete set of *.hook calls? Also, what directory does msg_debug_hook look into to find these files?

I'll update the Trafodion wiki with this information once I have the complete story.

Thanks,

Dave