dev@grizzly.java.net

Re: Chunking disabled in Rails grizzly adapter

From: Jeanfrancois Arcand <Jeanfrancois.Arcand_at_Sun.COM>
Date: Thu, 11 Sep 2008 13:26:53 -0400

Salut,

Vivek Pandey wrote:
> Oleksiy Stashok wrote:
>> Hello Vivek,
>>
>> currently under http-listener we have attributes and properties, which
>> are related to GF network configuration and web container
>> configuration. These properties are mixed up for now.
>> Yesterday, we discussed this issue on the meeting and came to
>> conclusion, that "disableChunking" http-listener property is related
>> to the WebContainer configuration, not HTTP in common.
> Maybe it is carryover from v2 but atleast the name suggests it is global
> http config for anything that listens on whichever port that the
> http-listener is tied to.
>> Otherwise we will come to issue, when it's not possible to set
>> different chunking mode for adapters, which are registered on the same
>> listener (web container adapter with chunking enabled and Ruby adapter
>> with the disabled chunking).
>> Once we will have grizzly-config done for v3, where we will separate
>> network configuration from web container - it will be even moved under
>> some web container related element.
>>
>
> grizzly-config in domain.xml, interesting. So this can contain config
> for each of the adapters?
>> So, each adapter should take care about enabling/disabling chunking
>> itself. If RubyAdapter wants to depend on web container property -
>> it's ok, but it needs to have the setup logic, which checks this
>> property and sets corresponding chunking mode.
>>
> In that case, can you point me to some code or tell me how do I get to
> http-listner properties from my Deployer? I register my grizzly adapter
> when Deployer.load() is called.

Take a look at
core/kernel/src/main/java/com/sun/enterprise/v3/services/impl/GrizzlyListenerConfigurator


>
> Also, Jeanfrancois mentioned providing something like
> GrizzlyResponse.setChunkingEnabled(false); IS this API integrated with
> the latest grizzly on v3 trunk? I will need this API if I have to use it.

Filled: https://grizzly.dev.java.net/issues/show_bug.cgi?id=254

Thanks

-- Jeanfrancois

>
> -vivek.
>> Thanks.
>>
>> WBR,
>> Alexey.
>>
>>
>>>>>>>>
>>>>>>>> just updated
>>>>>>>> https://glassfish.dev.java.net/issues/show_bug.cgi?id=5951
>>>>>>>>
>>>>>>>> actually it was just one devtest run, where this test failed,
>>>>>>>> but seems there were some side reasons of the fail. Since
>>>>>>>> 5.09.2008 this test is passing fine.
>>>>>>>>
>>>>>>>> As I mentioned before, currently in Grizzly each GrizzlyAdapter
>>>>>>>> has own chunking processing logic. It is not centralized.
>>>>>>>>
>>>>>>>> For v3 it's not so easy to make chunking centralized. Because at
>>>>>>>> the startup Grizzly may not even know about all the Adapters
>>>>>>>> existed... Adapters could be registered at the runtime.
>>>>>>>>
>>>>>>> Right, adapters are registered at runtime, I am registering
>>>>>>> RailsAdapter inside Deployer.load(). Since http listener knows
>>>>>>> about each adapter registered, can it not apply setting that it
>>>>>>> knows from the domain.xml? Looks like if you could set the
>>>>>>> chunking behavior dynamically for each registered adapters would
>>>>>>> be the way to go. The reason I say this is because HttpListner is
>>>>>>> the only entity and GrizzlyAdapters handle req/resp but the
>>>>>>> global properties should be enforced by the http-listner.
>>>>>> Well, currently there is no even mechanism to get all the
>>>>>> registered adapters. Currently we have mapper (URL <-> Adapter),
>>>>>> which returns the adapter for the specific URL.
>>>>>> Another point... What if we want to register the single Adapter on
>>>>>> several GrizzlyProxies (different http-listeners), which settings
>>>>>> should be applied in this case?
>>>>> Is it not true that each http listener has a corresponding setting
>>>>> in domain.xml?
>>>>
>>>> Yes.
>>>>
>>>>>
>>>>>> Looks like the best solution would be move the chunking logic
>>>>>> outside the Adapter. But not sure this could be done for prelude.
>>>>>>
>>>>
>>>> Hum....chunking is enabled at the Request/Response level...it has
>>>> nothing to do with Adapter :-) I'm not sure I follow about moving
>>>> this out of the Adapter...it is already out (created in
>>>> DefaultProcessorTask). What needs to be done here is the
>>>> JRubyAdapter must call:
>>>>
>>>> GrizzlyResponse.setChunkingEnabled(false);
>>>>
>>>> on every request, hence the http-listener configuration is never
>>>> taken into account. Now this API is not exposed with the current
>>>> Grizzly version, hence some work for me today :-) I will file an
>>>> issue in Grizzly so next Grizzly integration will contains what you
>>>> need.
>>>
>>> The API is good but I am not sure I follow this for the issue I am
>>> dealing with here. Are you saying keep the chunking disabled by
>>> default? This is going to result into poor performance for large data
>>> transfer.
>>>
>>> In my view the fix should be done thru some kind of configuration to
>>> disable chunking not other way round and for that http-listener
>>> configuration is the right place to do so.
>>>
>>> -vivek.
>>>
>>>
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: dev-unsubscribe_at_grizzly.dev.java.net
>>> <mailto:dev-unsubscribe_at_grizzly.dev.java.net>
>>> For additional commands, e-mail: dev-help_at_grizzly.dev.java.net
>>> <mailto:dev-help_at_grizzly.dev.java.net>
>>>
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe_at_grizzly.dev.java.net
> For additional commands, e-mail: dev-help_at_grizzly.dev.java.net
>