<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Aug 6, 2020 at 11:24 AM Bo Peng &lt;<a href="mailto:pengbo@sraoss.co.jp">pengbo@sraoss.co.jp</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Usama,<br>
<br>
On Wed, 29 Jul 2020 15:14:16 +0500<br>
Muhammad Usama &lt;<a href="mailto:m.usama@gmail.com" target="_blank">m.usama@gmail.com</a>&gt; wrote:<br>
<br>
&gt; On Wed, Jul 29, 2020 at 1:42 PM Bo Peng &lt;<a href="mailto:pengbo@sraoss.co.jp" target="_blank">pengbo@sraoss.co.jp</a>&gt; wrote:<br>
&gt; <br>
&gt; &gt; Hi Ishii-san,<br>
&gt; &gt;<br>
&gt; &gt; Thank you for your comments.<br>
&gt; &gt; I have fixed warnings and removed Makefile.in.<br>
&gt; &gt; Modified patch is attached.<br>
&gt; &gt;<br>
&gt; &gt; Usama,<br>
&gt; &gt;<br>
&gt; &gt; Do you have any comments?<br>
&gt; &gt;<br>
&gt; <br>
&gt; First of all thanks for the good work. I think this patch will<br>
&gt; drastically improve the watchdog setup experience.<br>
&gt; Overall the patch looks good while I have a couple of comments that can<br>
&gt; also be taken care<br>
&gt; of as a separate patch after committing this one.<br>
&gt; <br>
&gt; -- You have rightly removed wd_port key from config JSON  (in<br>
&gt; get_pool_config_from_json() and get_pool_config_json() functions)<br>
&gt; So I think this will cause incompatibility with the older versions. So we<br>
&gt; may need to bump the<br>
&gt; WD_MESSAGE_DATA_VERSION_MINOR version.<br>
<br>
To prevent incompatibility I think it&#39;s better to leave <br>
&quot;wd_port&quot; in POOL_CONFIG struct (pool_config).<br>
<br>
And also I will leave &quot;wd_remote_nodes&quot; in POOL_CONFIG struct,<br>
because it is easy to compare the number of remote pgpool nodes.<br></blockquote><div><br></div><div>I think we can live with minor incompatibility if it is absolutely necessary</div><div>since this feature will be part of the next major release of Pgpool-II.</div><div>So if leaving the wd_port and wd_remote_nodes in POOL_CONFIG struct</div><div>compromises the design in any way then, in my opinion, you should not worry</div><div>about the incompatibility and stick with the current design and just</div><div>increment the WD_MESSAGE_DATA_VERSION_MINOR</div><div><br></div><div>Thanks</div><div>Best regards</div><div>Muhammad Usama</div><div><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
&gt; -- currently, watchdog uses the WatchdogNode-&gt;private_id to identify each<br>
&gt; watchdog<br>
&gt; node locally while private_id of local node is always set to 0.<br>
&gt; And now with this patch, the node number for each watchdog node can be<br>
&gt; consistent across the cluster so we can make this private_id go away and<br>
&gt; use pgpool_node_id<br>
&gt; as a cluster-wide unique id for each node.<br>
&gt; For that, I think we can also include pgpool_node_id in the<br>
&gt; WD_ADD_NODE_MESSAGE<br>
&gt; message and upon receiving WD_ADD_NODE_MESSAGE watchdog must also<br>
&gt; verify that multiple pgpool-II nodes should not be using the same<br>
&gt;  pgpool_node_id.<br>
<br>
Yes. I agree to use pgpool_node_id.<br>
I will add the implementation. </blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
&gt; Thanks<br>
&gt; Best regards<br>
&gt; Muhammad Usama<br>
&gt; <br>
&gt; <br>
&gt; <br>
&gt; <br>
&gt; &gt; On Tue, 28 Jul 2020 14:13:14 +0900 (JST)<br>
&gt; &gt; Tatsuo Ishii &lt;<a href="mailto:ishii@sraoss.co.jp" target="_blank">ishii@sraoss.co.jp</a>&gt; wrote:<br>
&gt; &gt;<br>
&gt; &gt; &gt; Hi Peng,<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; Thank you for the patch (that must be a hard work). I have applied the<br>
&gt; &gt; &gt; patch to the master branch head and here are some comments:<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; 1. The patch should not include Makefile.in. In the development stage<br>
&gt; &gt; &gt; each developer uses their own environment, thus generated files by<br>
&gt; &gt; &gt; autoconf may vary. This prevented me from applying the patch and I had<br>
&gt; &gt; &gt; to remove Makefile.in patch part.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; 2. I saw some warnings from gcc.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; -------------------------------------------------------------------------------------------------------------<br>
&gt; &gt; &gt; config/pool_config_variables.c: In function ‘SetHBDestIfFunc’:<br>
&gt; &gt; &gt; config/pool_config_variables.c:4945:5: warning: this ‘if’ clause does<br>
&gt; &gt; not guard... [-Wmisleading-indentation]<br>
&gt; &gt; &gt;      if (g_pool_config.wd_lifecheck_method != LIFECHECK_BY_HB)<br>
&gt; &gt; &gt;      ^~<br>
&gt; &gt; &gt; config/pool_config_variables.c:4955:2: note: ...this statement, but the<br>
&gt; &gt; latter is misleadingly indented as if it were guarded by the ‘if’<br>
&gt; &gt; &gt;   for (i = 0; i &lt; WD_MAX_IF_NUM; i++)<br>
&gt; &gt; &gt;   ^~~<br>
&gt; &gt; &gt; pool_config_variables.c: In function ‘SetHBDestIfFunc’:<br>
&gt; &gt; &gt; pool_config_variables.c:4945:5: warning: this ‘if’ clause does not<br>
&gt; &gt; guard... [-Wmisleading-indentation]<br>
&gt; &gt; &gt;      if (g_pool_config.wd_lifecheck_method != LIFECHECK_BY_HB)<br>
&gt; &gt; &gt;      ^~<br>
&gt; &gt; &gt; pool_config_variables.c:4955:2: note: ...this statement, but the latter<br>
&gt; &gt; is misleadingly indented as if it were guarded by the ‘if’<br>
&gt; &gt; &gt;   for (i = 0; i &lt; WD_MAX_IF_NUM; i++)<br>
&gt; &gt; &gt;   ^~~<br>
&gt; &gt; &gt; pool_config_variables.c: In function ‘SetHBDestIfFunc’:<br>
&gt; &gt; &gt; pool_config_variables.c:4945:5: warning: this ‘if’ clause does not<br>
&gt; &gt; guard... [-Wmisleading-indentation]<br>
&gt; &gt; &gt;      if (g_pool_config.wd_lifecheck_method != LIFECHECK_BY_HB)<br>
&gt; &gt; &gt;      ^~<br>
&gt; &gt; &gt; pool_config_variables.c:4955:2: note: ...this statement, but the latter<br>
&gt; &gt; is misleadingly indented as if it were guarded by the ‘if’<br>
&gt; &gt; &gt;   for (i = 0; i &lt; WD_MAX_IF_NUM; i++)<br>
&gt; &gt; &gt;   ^~~<br>
&gt; &gt; &gt; pool_config_variables.c: In function ‘SetHBDestIfFunc’:<br>
&gt; &gt; &gt; pool_config_variables.c:4945:5: warning: this ‘if’ clause does not<br>
&gt; &gt; guard... [-Wmisleading-indentation]<br>
&gt; &gt; &gt;      if (g_pool_config.wd_lifecheck_method != LIFECHECK_BY_HB)<br>
&gt; &gt; &gt;      ^~<br>
&gt; &gt; &gt; pool_config_variables.c:4955:2: note: ...this statement, but the latter<br>
&gt; &gt; is misleadingly indented as if it were guarded by the ‘if’<br>
&gt; &gt; &gt;   for (i = 0; i &lt; WD_MAX_IF_NUM; i++)<br>
&gt; &gt; &gt;   ^~~<br>
&gt; &gt; &gt;<br>
&gt; &gt; -------------------------------------------------------------------------------------------------------------<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; 3. I confirmed that standard regression tests were all ok on my<br>
&gt; &gt; &gt; Ubuntu18 box.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; Other than the warnings above and Makefile.in issue, this patch looks<br>
&gt; &gt; &gt; in good shape for me.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; Best regards,<br>
&gt; &gt; &gt; --<br>
&gt; &gt; &gt; Tatsuo Ishii<br>
&gt; &gt; &gt; SRA OSS, Inc. Japan<br>
&gt; &gt; &gt; English: <a href="http://www.sraoss.co.jp/index_en.php" rel="noreferrer" target="_blank">http://www.sraoss.co.jp/index_en.php</a><br>
&gt; &gt; &gt; Japanese:<a href="http://www.sraoss.co.jp" rel="noreferrer" target="_blank">http://www.sraoss.co.jp</a><br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; hello,<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; I have completed this patch.<br>
&gt; &gt; &gt; &gt; (The configuration example docs need to be updated.)<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; This patch can simplify WATCHDOG configurations<br>
&gt; &gt; &gt; &gt; by using a common configuration file for each pgpool node,<br>
&gt; &gt; &gt; &gt; and users just copy the configuration file to each other node without<br>
&gt; &gt; editing.<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; =======<br>
&gt; &gt; &gt; &gt; Changes<br>
&gt; &gt; &gt; &gt; =======<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; The current watchdog and heartbeat configuration parameters (for 3<br>
&gt; &gt; pgpool nodes)<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt;     ----<br>
&gt; &gt; &gt; &gt;     wd_hostname<br>
&gt; &gt; &gt; &gt;     wd_port<br>
&gt; &gt; &gt; &gt;     wd_heartbeat_port<br>
&gt; &gt; &gt; &gt;     heartbeat_destination0<br>
&gt; &gt; &gt; &gt;     heartbeat_destination_port0<br>
&gt; &gt; &gt; &gt;     heartbeat_destination1<br>
&gt; &gt; &gt; &gt;     heartbeat_destination_port1<br>
&gt; &gt; &gt; &gt;     other_pgpool_hostname0<br>
&gt; &gt; &gt; &gt;     other_pgpool_port0<br>
&gt; &gt; &gt; &gt;     other_pgpool_hostname1<br>
&gt; &gt; &gt; &gt;     other_pgpool_port1<br>
&gt; &gt; &gt; &gt;     ----<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; are changed to<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt;      ----<br>
&gt; &gt; &gt; &gt;      hostname0 = &#39;server1&#39;<br>
&gt; &gt; &gt; &gt;      wd_port0 = 9000<br>
&gt; &gt; &gt; &gt;      pgpool_port0 = 9999<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt;      hostname1 = &#39;server2&#39;<br>
&gt; &gt; &gt; &gt;      wd_port1 = 9000<br>
&gt; &gt; &gt; &gt;      pgpool_port1 = 9999<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt;      hostname2 = &#39;server3&#39;<br>
&gt; &gt; &gt; &gt;      wd_port2 = 9000<br>
&gt; &gt; &gt; &gt;      pgpool_port2 = 9999<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt;      heartbeat_hostname0 = &#39;server1&#39;<br>
&gt; &gt; &gt; &gt;      heartbeat_port0 = 9694<br>
&gt; &gt; &gt; &gt;      heartbeat_device0 = &#39;&#39;<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt;      heartbeat_hostname1 = &#39;server2&#39;<br>
&gt; &gt; &gt; &gt;      heartbeat_port1 = 9694<br>
&gt; &gt; &gt; &gt;      heartbeat_device1 = &#39;&#39;<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt;      heartbeat_hostname2 = &#39;server3&#39;<br>
&gt; &gt; &gt; &gt;      heartbeat_port2 = 9694<br>
&gt; &gt; &gt; &gt;      heartbeat_device2 = &#39;&#39;<br>
&gt; &gt; &gt; &gt;      ----<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; You can specify multiple configurations in<br>
&gt; &gt; &gt; &gt; &quot;heartbeat_hostname&quot; and &quot;heartbeat_device&quot; by separating<br>
&gt; &gt; &gt; &gt; them using semicolon (;).<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; And user needs to specify local pgpool node id in a pgpool_node_id<br>
&gt; &gt; file<br>
&gt; &gt; &gt; &gt; which is created in the direcroty of pgpool.conf.<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; For example:<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; (pgpool node 0)<br>
&gt; &gt; &gt; &gt; $ cat &lt;directory path of pgpool.conf&gt;/pgpool_node_id<br>
&gt; &gt; &gt; &gt; 0<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; (pgpool node 1)<br>
&gt; &gt; &gt; &gt; $ cat &lt;directory path of pgpool.conf&gt;/pgpool_node_id<br>
&gt; &gt; &gt; &gt; 1<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; (pgpool node 2)<br>
&gt; &gt; &gt; &gt; $ cat &lt;directory path of pgpool.conf&gt;/pgpool_node_id<br>
&gt; &gt; &gt; &gt; 2<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; Any feedback about this patch?<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; On Thu, 25 Jun 2020 11:17:13 +0900 (JST)<br>
&gt; &gt; &gt; &gt; Tatsuo Ishii &lt;<a href="mailto:ishii@sraoss.co.jp" target="_blank">ishii@sraoss.co.jp</a>&gt; wrote:<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt;&gt; &gt; Ishii-san, Usama,<br>
&gt; &gt; &gt; &gt;&gt; &gt;<br>
&gt; &gt; &gt; &gt;&gt; &gt; Thank you for your advice.<br>
&gt; &gt; &gt; &gt;&gt; &gt; I have some questions about heartbeat related parameters.<br>
&gt; &gt; &gt; &gt;&gt; &gt;<br>
&gt; &gt; &gt; &gt;&gt; &gt; I would like to change the watchdog related parameters as follow:<br>
&gt; &gt; &gt; &gt;&gt; &gt;<br>
&gt; &gt; &gt; &gt;&gt; &gt; ----------------------<br>
&gt; &gt; &gt; &gt;&gt; &gt; wd_hostname0 =<br>
&gt; &gt; &gt; &gt;&gt; &gt; pgpool_port0 =<br>
&gt; &gt; &gt; &gt;&gt; &gt; wd_port0 =<br>
&gt; &gt; &gt; &gt;&gt; &gt;<br>
&gt; &gt; &gt; &gt;&gt; &gt; wd_hostname1 =<br>
&gt; &gt; &gt; &gt;&gt; &gt; pgpool_port1 =<br>
&gt; &gt; &gt; &gt;&gt; &gt; wd_port1 =<br>
&gt; &gt; &gt; &gt;&gt; &gt; .<br>
&gt; &gt; &gt; &gt;&gt; &gt; .<br>
&gt; &gt; &gt; &gt;&gt; &gt; .<br>
&gt; &gt; &gt; &gt;&gt; &gt;<br>
&gt; &gt; &gt; &gt;&gt; &gt; heartbeat_hostname0 =<br>
&gt; &gt; &gt; &gt;&gt; &gt; heartbeat_port0 =<br>
&gt; &gt; &gt; &gt;&gt; &gt; heartbeat_device0 =<br>
&gt; &gt; &gt; &gt;&gt; &gt;<br>
&gt; &gt; &gt; &gt;&gt; &gt; heartbeat_hostname1 =<br>
&gt; &gt; &gt; &gt;&gt; &gt; heartbeat_port1 =<br>
&gt; &gt; &gt; &gt;&gt; &gt; heartbeat_device1 =<br>
&gt; &gt; &gt; &gt;&gt; &gt; ----------------------<br>
&gt; &gt; &gt; &gt;&gt; &gt;<br>
&gt; &gt; &gt; &gt;&gt; &gt; However, during the implementation, I noticed more than one network<br>
&gt; &gt; interface<br>
&gt; &gt; &gt; &gt;&gt; &gt; can be specified to send/receive heartbeat signal in Pgpool-II.<br>
&gt; &gt; &gt; &gt;&gt; &gt;<br>
&gt; &gt; &gt; &gt;&gt; &gt; Because only one &quot;wd_heartbeat_port&quot; can be specified,<br>
&gt; &gt; &gt; &gt;&gt; &gt; &quot;heartbeat_destination_portX&quot; should be specified with the same<br>
&gt; &gt; port number?<br>
&gt; &gt; &gt; &gt;&gt; &gt;<br>
&gt; &gt; &gt; &gt;&gt; &gt;<br>
&gt; &gt; &gt; &gt;&gt; &gt; For example: 3 pgpool node, heartbeat with 2 NIC<br>
&gt; &gt; &gt; &gt;&gt; &gt;<br>
&gt; &gt; &gt; &gt;&gt; &gt; Should we configure heartbeat paramaters as below?<br>
&gt; &gt; &gt; &gt;&gt; &gt;<br>
&gt; &gt; &gt; &gt;&gt; &gt; ---------------<br>
&gt; &gt; &gt; &gt;&gt; &gt; wd_heartbeat_port = 9694<br>
&gt; &gt; &gt; &gt;&gt; &gt;<br>
&gt; &gt; &gt; &gt;&gt; &gt; heartbeat_destination0 = &quot;192.168.37.102&quot;<br>
&gt; &gt; &gt; &gt;&gt; &gt; heartbeat_destination1 = &#39;192.168.54.102&#39;<br>
&gt; &gt; &gt; &gt;&gt; &gt; heartbeat_destination_port0 = 9694<br>
&gt; &gt; &gt; &gt;&gt; &gt; heartbeat_destination_port1 = 9694<br>
&gt; &gt; &gt; &gt;&gt; &gt; heartbeat_device0 = &#39;eth0&#39;<br>
&gt; &gt; &gt; &gt;&gt; &gt; heartbeat_device1 = &#39;eth1&#39;<br>
&gt; &gt; &gt; &gt;&gt; &gt;<br>
&gt; &gt; &gt; &gt;&gt; &gt; heartbeat_destination2 = &#39;192.168.37.103&#39;<br>
&gt; &gt; &gt; &gt;&gt; &gt; heartbeat_destination3 = &#39;192.168.54.103&#39;<br>
&gt; &gt; &gt; &gt;&gt; &gt; heartbeat_destination_port2 = 9694<br>
&gt; &gt; &gt; &gt;&gt; &gt; heartbeat_destination_port3 = 9694<br>
&gt; &gt; &gt; &gt;&gt; &gt; heartbeat_device2 = &#39;eth0&#39;<br>
&gt; &gt; &gt; &gt;&gt; &gt; heartbeat_device3 = &#39;eth1&#39;<br>
&gt; &gt; &gt; &gt;&gt; &gt; ---------------<br>
&gt; &gt; &gt; &gt;&gt; &gt;<br>
&gt; &gt; &gt; &gt;&gt; &gt;<br>
&gt; &gt; &gt; &gt;&gt; &gt; If above is correct, I would like to design the heartbeat<br>
&gt; &gt; paramaters as below:<br>
&gt; &gt; &gt; &gt;&gt; &gt; If it is the own node settings, &quot;heartbeat_hostname&quot; and<br>
&gt; &gt; &quot;heartbeat_device&quot; will be ignored.<br>
&gt; &gt; &gt; &gt;&gt; &gt;<br>
&gt; &gt; &gt; &gt;&gt; &gt; ---------------<br>
&gt; &gt; &gt; &gt;&gt; &gt; heartbeat_hostname0 = &#39;192.168.37.101:192.168.54.101&#39;<br>
&gt; &gt; &gt; &gt;&gt; &gt; heartbeat_port0 = 9694<br>
&gt; &gt; &gt; &gt;&gt; &gt; heartbeat_device0 = &#39;eth0:eth1&#39;<br>
&gt; &gt; &gt; &gt;&gt; &gt;<br>
&gt; &gt; &gt; &gt;&gt; &gt; heartbeat_hostname1 = &#39;192.168.37.102:192.168.54.102&#39;<br>
&gt; &gt; &gt; &gt;&gt; &gt; heartbeat_port1 = 9694<br>
&gt; &gt; &gt; &gt;&gt; &gt; heartbeat_device1 = &#39;eth0:eth1&#39;<br>
&gt; &gt; &gt; &gt;&gt; &gt;<br>
&gt; &gt; &gt; &gt;&gt; &gt; heartbeat_hostname2 = &#39;192.168.37.103:192.168.54.103&#39;<br>
&gt; &gt; &gt; &gt;&gt; &gt; heartbeat_port2 = 9694<br>
&gt; &gt; &gt; &gt;&gt; &gt; heartbeat_device2 = &#39;eth0:eth1&#39;<br>
&gt; &gt; &gt; &gt;&gt; &gt; ---------------<br>
&gt; &gt; &gt; &gt;&gt; &gt;<br>
&gt; &gt; &gt; &gt;&gt; &gt; What do you think?<br>
&gt; &gt; &gt; &gt;&gt;<br>
&gt; &gt; &gt; &gt;&gt; Above looks good to me.<br>
&gt; &gt; &gt; &gt;&gt;<br>
&gt; &gt; &gt; &gt;&gt; BTW, if the IP addresses are on the same subnet, it is not enough to<br>
&gt; &gt; &gt; &gt;&gt; specify heartbeat_device. You also need to tweak Linux kernel<br>
&gt; &gt; &gt; &gt;&gt; parameters<br>
&gt; &gt; &gt; &gt;&gt; (/proc/sys/net/ipv4/conf/***/{arp_announce,arp_ignore). Maybe we<br>
&gt; &gt; &gt; &gt;&gt; should note this in the manual.<br>
&gt; &gt; &gt; &gt;&gt;<br>
&gt; &gt; &gt; &gt;&gt; I have learned this from following blog (in Japanese).<br>
&gt; &gt; &gt; &gt;&gt;<br>
&gt; &gt; &gt; &gt;&gt; <a href="http://www.nminoru.jp/~nminoru/diary/2014/02.html#20140203p1" rel="noreferrer" target="_blank">http://www.nminoru.jp/~nminoru/diary/2014/02.html#20140203p1</a><br>
&gt; &gt; &gt; &gt;&gt;<br>
&gt; &gt; &gt; &gt;&gt; Best regards,<br>
&gt; &gt; &gt; &gt;&gt; --<br>
&gt; &gt; &gt; &gt;&gt; Tatsuo Ishii<br>
&gt; &gt; &gt; &gt;&gt; SRA OSS, Inc. Japan<br>
&gt; &gt; &gt; &gt;&gt; English: <a href="http://www.sraoss.co.jp/index_en.php" rel="noreferrer" target="_blank">http://www.sraoss.co.jp/index_en.php</a><br>
&gt; &gt; &gt; &gt;&gt; Japanese:<a href="http://www.sraoss.co.jp" rel="noreferrer" target="_blank">http://www.sraoss.co.jp</a><br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; --<br>
&gt; &gt; &gt; &gt; Bo Peng &lt;<a href="mailto:pengbo@sraoss.co.jp" target="_blank">pengbo@sraoss.co.jp</a>&gt;<br>
&gt; &gt; &gt; &gt; SRA OSS, Inc. Japan<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; --<br>
&gt; &gt; Bo Peng &lt;<a href="mailto:pengbo@sraoss.co.jp" target="_blank">pengbo@sraoss.co.jp</a>&gt;<br>
&gt; &gt; SRA OSS, Inc. Japan<br>
&gt; &gt;<br>
<br>
<br>
-- <br>
Bo Peng &lt;<a href="mailto:pengbo@sraoss.co.jp" target="_blank">pengbo@sraoss.co.jp</a>&gt;<br>
SRA OSS, Inc. Japan<br>
</blockquote></div></div>