[ 
https://issues.apache.org/jira/browse/SOLR-3157?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13217250#comment-13217250
 ] 

Yonik Seeley edited comment on SOLR-3157 at 2/27/12 4:21 PM:
-------------------------------------------------------------

Here's a patch that changes the log format for tests to something that should 
be easier to debug tests with multiple core containers.

Example:

{code}
18808 T=64 C3 UPDATE /update 
{waitSearcher=true&wt=javabin&wt=javabin&commit_end_point=true&commit=true&version=2&version=2}
 {commit=} 0 60
18809 T=61 C2 UPDATE /update 
{waitSearcher=true&wt=javabin&commit=true&version=2} {commit=} 0 94
18810 T=1 oascc.ZkStateReader.updateCloudState Manual update of cluster state 
initiated
18811 T=1 oascc.ZkStateReader.updateCloudState Updating cloud state from 
ZooKeeper... 
18855 T=99 C1 REQ /select {distrib=false&wt=javabin&q=*:*&version=2} hits=190 
status=0 QTime=35 
18864 T=100 C3 REQ /select {distrib=false&wt=javabin&q=*:*&version=2} hits=189 
status=0 QTime=1 
18868 T=101 C2 REQ /select {distrib=false&wt=javabin&q=*:*&version=2} hits=180 
status=0 QTime=1 
{code}

- first number is milliseconds since the start of the test.  Makes it easy to 
sort by the first number or subtract to get elapsed time, and is more relevant 
to a short running test.
- T=101 is the thread ID... this will be useful for any multi-threaded test.
- C2 is the core number.  we don't use core name since there can be multiple 
core containers with the same name (like "") in these distributed tests.
- package names just use the first letters catenated together for brevity
- aliases for common log output are implemented (REQ and UPDATE)
- I got rid of the double logging for updates
- single line format is easier to read and  easier to grep and do things with 
scripts
- the first time a core is seen (or whenever it's cloudstate changes) that is 
output.  This allows correlation of C2 with URLs.
For example, if we want to know about core C2, we search back in the logs for 
C2_STATE and see
{code}
ASYNC  NEW_CORE C2 name= org.apache.solr.core.SolrCore@22e38fca 
url=http://127.0.0.1:58141/solr/ node=127.0.0.1:58141_solr 
C2_STATE=coll:collection1 core: props:{num_shards=3, shard=shard3, 
state=active, core=, collection=collection1, node_name=127.0.0.1:58141_solr, 
base_url=http://127.0.0.1:58141/solr}
{code}

We can only currently do core / container correlation when SolrRequestInfo is 
set (i.e. request handler requests).  I tried setting a ThreadGroup for the 
jetty instances we spin up, but they didn't stick (request threads were still 
part of the main thread group).  Still, I think this is moving in the right 
direction.
                
      was (Author: [email protected]):
    Here's a patch that changes the log format for tests to something that 
should be easier to debug tests with multiple core containers.

Example:

{code}
18808 T=64 C3 UPDATE /update 
{waitSearcher=true&wt=javabin&wt=javabin&commit_end_point=true&commit=true&version=2&version=2}
 {commit=} 0 60
18809 T=61 C2 UPDATE /update 
{waitSearcher=true&wt=javabin&commit=true&version=2} {commit=} 0 94
18810 T=1 oascc.ZkStateReader.updateCloudState Manual update of cluster state 
initiated
18811 T=1 oascc.ZkStateReader.updateCloudState Updating cloud state from 
ZooKeeper... 
18855 T=99 C1 REQ /select {distrib=false&wt=javabin&q=*:*&version=2} hits=190 
status=0 QTime=35 
18864 T=100 C3 REQ /select {distrib=false&wt=javabin&q=*:*&version=2} hits=189 
status=0 QTime=1 
18868 T=101 C2 REQ /select {distrib=false&wt=javabin&q=*:*&version=2} hits=180 
status=0 QTime=1 
{code}

- first number is milliseconds since the start of the test.  Makes it easy to 
sort by the first number or subtract to get elapsed time, and is more relevant 
to a short running test.
- T=101 is the thread ID... this will be useful for any multi-threaded test.
- C2 is the core number.  we don't use core name since there can be multiple 
core containers with the same name (like "") in these distributed tests.
- package names just use the first letters catenated together for brevity
- aliases for common log output are implemented (REQ and UPDATE)
- I got rid of the double logging for updates
- the first time a core is seen (or whenever it's cloudstate changes) that is 
output.  This allows correlation of C2 with URLs.
For example, if we want to know about core C2, we search back in the logs for 
C2_STATE and see
{code}
ASYNC  NEW_CORE C2 name= org.apache.solr.core.SolrCore@22e38fca 
url=http://127.0.0.1:58141/solr/ node=127.0.0.1:58141_solr 
C2_STATE=coll:collection1 core: props:{num_shards=3, shard=shard3, 
state=active, core=, collection=collection1, node_name=127.0.0.1:58141_solr, 
base_url=http://127.0.0.1:58141/solr}
{code}

We can only currently do core / container correlation when SolrRequestInfo is 
set (i.e. request handler requests).  I tried setting a ThreadGroup for the 
jetty instances we spin up, but they didn't stick (request threads were still 
part of the main thread group).  Still, I think this is moving in the right 
direction.
                  
> custom logging
> --------------
>
>                 Key: SOLR-3157
>                 URL: https://issues.apache.org/jira/browse/SOLR-3157
>             Project: Solr
>          Issue Type: Test
>            Reporter: Yonik Seeley
>            Priority: Blocker
>         Attachments: SOLR-3157.patch
>
>
> We need custom logging to decipher tests with multiple core containers, 
> cores, in a single JVM.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to