You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by bu...@apache.org on 2006/03/07 22:48:54 UTC
DO NOT REPLY [Bug 38889] New: - mod_jk disregards configuration file order of JkMount
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG�
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=38889>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND�
INSERTED IN THE BUG DATABASE.
http://issues.apache.org/bugzilla/show_bug.cgi?id=38889
Summary: mod_jk disregards configuration file order of JkMount
Product: Tomcat 5
Version: 5.5.15
Platform: All
OS/Version: Linux
Status: NEW
Severity: normal
Priority: P2
Component: Native:JK
AssignedTo: tomcat-dev@jakarta.apache.org
ReportedBy: srevilak@speakeasy.net
I've been trying out the new version of mod_jk (1.2.15)
I've been working on upgrading our mod_jk from 1.2.9 to 1.2.15. (We
use mod_jk primarily on Linux, in conjunction with apache 2.0.53 and
tomcat 5.5.15).
During testing, I noticed several cases of JkMount mappings going to
the wrong set of workers. By `wrong', I mean `not the same workers as
1.2.9 would have chosen'; this behavior is reproducible with both the
apache 1.3 and 2.0 versions of mod_jk
Here is an example:
Given JkMount directives:
JkMount /k/* worker_k
JkMount /s/* worker_s
JkMount /m/* worker_m
JkMount /h/* worker_h
JkMount /*.jsp worker_default
These mount points effectively represent 5 different applications
under a single VirtualHost; and they're handled by 5 different groups
of tomcats.
I'll make a request for the uri "/this-uri-wont-match". Here is the
portion of JkLogFile that attempts matching:
[Tue Mar 07 16:20:40 2006] [16809:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (449):
Attempting to map URI '/this-uri-wont-match' from 5 maps
[Tue Mar 07 16:20:40 2006] [16809:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (461):
Attempting to map context URI '/*.jsp'
[Tue Mar 07 16:20:40 2006] [16809:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (461):
Attempting to map context URI '/k/*'
[Tue Mar 07 16:20:40 2006] [16809:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (461):
Attempting to map context URI '/s/*'
[Tue Mar 07 16:20:40 2006] [16809:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (461):
Attempting to map context URI '/m/*'
[Tue Mar 07 16:20:40 2006] [16809:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (461):
Attempting to map context URI '/h/*'
I see that the code is attempting a `longest-pattern-first' match.
However, the side effect of this is uri's like
/m/some.jsp
/h/some-other.jsp
/s/yet-another.jsp
....
become unreachable. Because mod_jk 1.2.15 uses pattern length, and
not *configuration file* order, there are circumstances where it will
never match the desired servlet container.
Commenting out the call to worker_qsort() (line 297 of
jk_uri_worker_map.c -- diff attached) makes the issue go away.
Would it be possible to go back to matching based on configuration
file order?
--
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org
DO NOT REPLY [Bug 38889] - mod_jk disregards configuration file order of JkMount
Posted by bu...@apache.org.
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG�
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=38889>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND�
INSERTED IN THE BUG DATABASE.
http://issues.apache.org/bugzilla/show_bug.cgi?id=38889
------- Additional Comments From srevilak@speakeasy.net 2006-03-08 16:47 -------
I see what mod_jk is doing in attempting to match the longest uri
pattern first. The Servlet specification 2.4 (section SRV.11.1) says
The container will recursively try tomatch the longest
path-prefix. This is done by stepping down the path tree a
directory at a time, using the / character as a path
separator. The longest match determines the servlet selected.
This definitely favors a longest match. However, I think it also
implies that 'longest' means 'most uri path elements'. I'd like to
submit a patch that brings mod_jk closer to this behavior.
I'll attach the patch to this issue. Below are some JkLogFile
examples to demonstrate what the patch does.
* * *
For what follows, I've set up an apache configuration with this list
of workers defined:
JkMount /*.jsp worker_default
JkMount /a/* worker_a
JkMount /a/1/* worker_a1
JkMount /a/1/2/* worker_a12
JkMount /golly-gee-batman/* worker_golly
This is the order in which the JkMount directives appear in the httpd
configuration -- the goal is to verify that `most path elements' gets
preference. The first two samples of log output show a stock mod_jk
1.2.15; subsequent examples show a patched mod_jk 1.2.15.
* * *
# (unpatched mod_jk-1.2.15)
#
# Here, we submit a non-matching URI, just to see the iteration
# order that mod_jk will use when attempting to locate a worker for
# the request.
[Wed Mar 08 10:49:22 2006] [18652:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (449):
Attempting to map URI '/not-found' from 5 maps
[Wed Mar 08 10:49:22 2006] [18652:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (461):
Attempting to map context URI '/golly-gee-batman/*'
[Wed Mar 08 10:49:22 2006] [18652:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (461):
Attempting to map context URI '/a/1/2/*'
[Wed Mar 08 10:49:22 2006] [18652:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (461):
Attempting to map context URI '/*.jsp'
[Wed Mar 08 10:49:22 2006] [18652:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (461):
Attempting to map context URI '/a/1/*'
[Wed Mar 08 10:49:22 2006] [18652:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (461):
Attempting to map context URI '/a/*'
# (unpatched mod_jk-1.2.15)
#
# Here, we have a request for /a/1/foo.jsp. Log entries below show
# thie request being mapped to '/*.jsp', not '/a/1/*'
#
[Wed Mar 08 10:52:56 2006] [18653:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (449):
Attempting to map URI '/a/1/foo.jsp' from 5 maps
[Wed Mar 08 10:52:56 2006] [18653:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (461):
Attempting to map context URI '/golly-gee-batman/*'
[Wed Mar 08 10:52:56 2006] [18653:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (461):
Attempting to map context URI '/a/1/2/*'
[Wed Mar 08 10:52:56 2006] [18653:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (461):
Attempting to map context URI '/*.jsp'
[Wed Mar 08 10:52:56 2006] [18653:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (475):
Found a wildchar match worker_default -> /*.jsp
* * *
# (patched mod_jk-1.2.15)
#
# Here is the same "/not-found" request, made against mod_jk-1.2.15,
# with the submitted patch. Note that the matching order reflects
# the number of uri path elements in the JkMount directive.
#
[Wed Mar 08 11:31:15 2006] [20808:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (487):
Attempting to map URI '/not-found' from 5 maps
[Wed Mar 08 11:31:15 2006] [20808:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (499):
Attempting to map context URI '/a/1/2/*'
[Wed Mar 08 11:31:15 2006] [20808:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (499):
Attempting to map context URI '/a/1/*'
[Wed Mar 08 11:31:15 2006] [20808:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (499):
Attempting to map context URI '/golly-gee-batman/*'
[Wed Mar 08 11:31:15 2006] [20808:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (499):
Attempting to map context URI '/a/*'
[Wed Mar 08 11:31:15 2006] [20808:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (499):
Attempting to map context URI '/*.jsp'
# (patched mod_jk-1.2.15)
#
# Request for '/a/1/2/foo.jsp'
#
[Wed Mar 08 11:32:29 2006] [20809:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (487):
Attempting to map URI '/a/1/2/foo.jsp' from 5 maps
[Wed Mar 08 11:32:29 2006] [20809:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (499):
Attempting to map context URI '/a/1/2/*'
[Wed Mar 08 11:32:29 2006] [20809:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (513):
Found a wildchar match worker_a12 -> /a/1/2/*
# (patched mod_jk-1.2.15)
#
# Request for '/a/1/foo.jsp'
#
#
[Wed Mar 08 11:33:20 2006] [20808:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (487):
Attempting to map URI '/a/1/foo.jsp' from 5 maps
[Wed Mar 08 11:33:20 2006] [20808:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (499):
Attempting to map context URI '/a/1/2/*'
[Wed Mar 08 11:33:20 2006] [20808:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (499):
Attempting to map context URI '/a/1/*'
[Wed Mar 08 11:33:20 2006] [20808:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (513):
Found a wildchar match worker_a1 -> /a/1/*
# (patched mod_jk-1.2.15)
#
# Request for '/a/foo.jsp'
#
#
[Wed Mar 08 11:34:01 2006] [20809:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (487):
Attempting to map URI '/a/foo.jsp' from 5 maps
[Wed Mar 08 11:34:01 2006] [20809:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (499):
Attempting to map context URI '/a/1/2/*'
[Wed Mar 08 11:34:01 2006] [20809:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (499):
Attempting to map context URI '/a/1/*'
[Wed Mar 08 11:34:01 2006] [20809:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (499):
Attempting to map context URI '/golly-gee-batman/*'
[Wed Mar 08 11:34:01 2006] [20809:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (499):
Attempting to map context URI '/a/*'
[Wed Mar 08 11:34:01 2006] [20809:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (513):
Found a wildchar match worker_a -> /a/*
# (patched mod_jk-1.2.15)
#
# Request for '/golly-gee-batman/foo.jsp'
#
#
[Wed Mar 08 11:34:53 2006] [20808:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (487):
Attempting to map URI '/golly-gee-batman/foo.jsp' from 5 maps
[Wed Mar 08 11:34:53 2006] [20808:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (499):
Attempting to map context URI '/a/1/2/*'
[Wed Mar 08 11:34:53 2006] [20808:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (499):
Attempting to map context URI '/a/1/*'
[Wed Mar 08 11:34:53 2006] [20808:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (499):
Attempting to map context URI '/golly-gee-batman/*'
[Wed Mar 08 11:34:53 2006] [20808:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (513):
Found a wildchar match worker_golly -> /golly-gee-batman/*
# (patched mod_jk-1.2.15)
#
# Request for '/foo.jsp'
#
[Wed Mar 08 11:35:27 2006] [20809:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (487):
Attempting to map URI '/foo.jsp' from 5 maps
[Wed Mar 08 11:35:27 2006] [20809:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (499):
Attempting to map context URI '/a/1/2/*'
[Wed Mar 08 11:35:27 2006] [20809:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (499):
Attempting to map context URI '/a/1/*'
[Wed Mar 08 11:35:27 2006] [20809:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (499):
Attempting to map context URI '/golly-gee-batman/*'
[Wed Mar 08 11:35:27 2006] [20809:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (499):
Attempting to map context URI '/a/*'
[Wed Mar 08 11:35:27 2006] [20809:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (499):
Attempting to map context URI '/*.jsp'
[Wed Mar 08 11:35:27 2006] [20809:0000] [debug] map_uri_to_worker::jk_uri_worker_map.c (513):
Found a wildchar match worker_default -> /*.jsp
--
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org
DO NOT REPLY [Bug 38889] - mod_jk disregards configuration file order of JkMount
Posted by bu...@apache.org.
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG�
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=38889>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND�
INSERTED IN THE BUG DATABASE.
http://issues.apache.org/bugzilla/show_bug.cgi?id=38889
------- Additional Comments From srevilak@speakeasy.net 2006-03-08 16:49 -------
Created an attachment (id=17848)
--> (http://issues.apache.org/bugzilla/attachment.cgi?id=17848&action=view)
jk_uri_worker_map.c patch to order matching based on # of uri path elements
--
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org
DO NOT REPLY [Bug 38889] - mod_jk disregards configuration file order of JkMount
Posted by bu...@apache.org.
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG�
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=38889>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND�
INSERTED IN THE BUG DATABASE.
http://issues.apache.org/bugzilla/show_bug.cgi?id=38889
------- Additional Comments From srevilak@speakeasy.net 2006-03-07 21:50 -------
Created an attachment (id=17844)
--> (http://issues.apache.org/bugzilla/attachment.cgi?id=17844&action=view)
Patch to jk_uri_worker_map.c
--
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org
DO NOT REPLY [Bug 38889] - mod_jk disregards configuration file order of JkMount
Posted by bu...@apache.org.
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG�
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=38889>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND�
INSERTED IN THE BUG DATABASE.
http://issues.apache.org/bugzilla/show_bug.cgi?id=38889
mturk@apache.org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |FIXED
------- Additional Comments From mturk@apache.org 2006-03-16 08:10 -------
Commited.
Thanks!
--
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org
DO NOT REPLY [Bug 38889] - mod_jk disregards configuration file order of JkMount
Posted by bu...@apache.org.
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG�
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=38889>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND�
INSERTED IN THE BUG DATABASE.
http://issues.apache.org/bugzilla/show_bug.cgi?id=38889
srevilak@speakeasy.net changed:
What |Removed |Added
----------------------------------------------------------------------------
Attachment #17844|0 |1
is obsolete| |
--
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org