Sorry for the multiple emails :)

It is a deadlock between the Selector thread, which owns SSLChannelEndpoint
and is waiting on AsyncContinuation, and the thread writing to the output
stream, which is waiting on SSLChannelEndpoint and owns AsyncContination.

Details below. All help appreciated - even if just to tell me to open a bug
report :)

Thanks

Matt

Thread [pool-1-thread-5 Selector0] (Suspended)
 owns: SslSelectChannelEndPoint  (id=338)
waiting for: AsyncContinuation  (id=8895)
 AsyncContinuation.isSuspended() line: 173
SelectChannelConnector$SelectChannelHttpConnection(HttpConnection).isSuspended()
line: 653
 SslSelectChannelEndPoint(SelectChannelEndPoint).isReadyForDispatch() line:
316
SslSelectChannelEndPoint(SelectChannelEndPoint).schedule() line: 164
 SelectorManager$SelectSet.doSelect() line: 607
SelectorManager$1.run() line: 283
 ThreadPoolExecutor.runWorker(ThreadPoolExecutor$Worker) line: 1110
ThreadPoolExecutor$Worker.run() line: 603
 Thread.run() line: 722


Daemon Thread [Thread-111] (Suspended)
 owns: AsyncContinuation  (id=8895)
waiting for: SslSelectChannelEndPoint  (id=338)
 owned by: Thread [pool-1-thread-5 Selector0] (Suspended)
SslSelectChannelEndPoint(SelectChannelEndPoint).blockWritable(long) line:
371
 HttpGenerator(AbstractGenerator).blockForOutput(long) line: 530
HttpConnection$Output(HttpOutput).write(Buffer) line: 154
 HttpConnection$Output(HttpOutput).write(byte[], int, int) line: 96
Utf8Generator._flushBuffer() line: 1437
 Utf8Generator.writeString(String) line: 465
StdSerializers$StringSerializer.serialize(String, JsonGenerator,
SerializerProvider) line: 123
 StdSerializers$StringSerializer.serialize(Object, JsonGenerator,
SerializerProvider) line: 113
 MapSerializer.serializeFields(Map<?,?>, JsonGenerator, SerializerProvider)
line: 257
 MapSerializer.serialize(Map<?,?>, JsonGenerator, SerializerProvider) line:
177
 MapSerializer.serialize(Object, JsonGenerator, SerializerProvider) line: 22
BeanPropertyWriter.serializeAsField(Object, JsonGenerator,
SerializerProvider) line: 428
 BeanSerializer.serializeFields(Object, JsonGenerator, SerializerProvider)
line: 245
 BeanSerializer.serialize(Object, JsonGenerator, SerializerProvider) line:
212
ContainerSerializers$IndexedListSerializer.serializeContents(List<?>,
JsonGenerator, SerializerProvider) line: 291
 ContainerSerializers$IndexedListSerializer.serializeContents(Object,
JsonGenerator, SerializerProvider) line: 242
 
ContainerSerializers$IndexedListSerializer(ContainerSerializers$AsArraySerializer<T>).serialize(T,
JsonGenerator, SerializerProvider) line: 130
 BeanPropertyWriter.serializeAsField(Object, JsonGenerator,
SerializerProvider) line: 428
 BeanSerializer.serializeFields(Object, JsonGenerator, SerializerProvider)
line: 245
 BeanSerializer.serialize(Object, JsonGenerator, SerializerProvider) line:
212
StdSerializerProvider._serializeValue(JsonGenerator, Object) line: 587
 StdSerializerProvider.serializeValue(SerializationConfig, JsonGenerator,
Object, SerializerFactory) line: 245
 JsonUtils$MyObjectMapper(ObjectMapper)._configAndWriteValue(JsonGenerator,
Object) line: 1993
 JsonUtils$MyObjectMapper(ObjectMapper).writeValue(OutputStream, Object)
line: 1563
JsonUtils.toJson(Object, OutputStream) line: 340
 SearchServlet.writeResponse(ServletResponse, Object) line: 601
SearchServlet.access$2(SearchServlet, ServletResponse, Object) line: 598
 SearchServlet$3.hasFinished(PartialSearchContinuation) line: 392
SearchServlet$3.run() line: 414
 ThreadPoolExecutor.runWorker(ThreadPoolExecutor$Worker) line: 1110
ThreadPoolExecutor$Worker.run() line: 603
 Thread.run() line: 722


On Fri, Nov 11, 2011 at 5:37 PM, Matthew Painter <[email protected]
> wrote:

> It would seem similar to this:
>
>
> http://www.servlets.com/archive/servlet/ReadMsg?msgId=559312&listName=jetty-support
>
> Although this was said to be fixed.
>
>
>
> On Fri, Nov 11, 2011 at 5:23 PM, Matthew Painter <
> [email protected]> wrote:
>
>> Hi all,
>>
>> I wonder if any of you bright sparks can shed some light on this problem
>> with Jetty 7.5.1?
>>
>> I have a response that is bigger than the standard servlet buffer size
>> (32,768).
>>
>> I am using the continuation suspend/complete pattern.
>>
>> When writing to the response outputstream, 32768 bytes are written to the
>> client, and then the thread hangs forever on
>> SelectChannelEndpoint.blockWritable() - maybe deadlocked?
>>
>> This is a huge issue for us, as it brings down the server as threads get
>> deadlocked.
>>
>> Any information would be great - I can see a few similar bugs have been
>> raised, but none quite the same.
>>
>> Thanks :)
>>
>> Daemon Thread [Thread-111] (Suspended)
>> Object.wait(long) line: not available [native method]
>>  SelectChannelEndPoint.blockWritable(long) line: 384
>> HttpGenerator(AbstractGenerator).blockForOutput(long) line: 530
>>  HttpGenerator(AbstractGenerator).flush(long) line: 456
>> HttpConnection$Output(HttpOutput).flush() line: 89
>>  HttpConnection$Output.flush() line: 995
>> HttpConnection$Output(HttpOutput).write(Buffer) line: 172
>>  HttpConnection$Output(HttpOutput).write(byte[], int, int) line: 96
>> Utf8Generator._flushBuffer() line: 1437
>>  Utf8Generator.writeString(String) line: 465
>> StdSerializers$StringSerializer.serialize(String, JsonGenerator,
>> SerializerProvider) line: 123
>>  StdSerializers$StringSerializer.serialize(Object, JsonGenerator,
>> SerializerProvider) line: 113
>>  MapSerializer.serializeFields(Map<?,?>, JsonGenerator,
>> SerializerProvider) line: 257
>>  MapSerializer.serialize(Map<?,?>, JsonGenerator, SerializerProvider)
>> line: 177
>>  MapSerializer.serialize(Object, JsonGenerator, SerializerProvider)
>> line: 22
>> ContainerSerializers$IndexedListSerializer.serializeContents(List<?>,
>> JsonGenerator, SerializerProvider) line: 291
>>  ContainerSerializers$IndexedListSerializer.serializeContents(Object,
>> JsonGenerator, SerializerProvider) line: 242
>>  
>> ContainerSerializers$IndexedListSerializer(ContainerSerializers$AsArraySerializer<T>).serialize(T,
>> JsonGenerator, SerializerProvider) line: 130
>>  MapSerializer.serializeFields(Map<?,?>, JsonGenerator,
>> SerializerProvider) line: 257
>>  MapSerializer.serialize(Map<?,?>, JsonGenerator, SerializerProvider)
>> line: 177
>>  MapSerializer.serialize(Object, JsonGenerator, SerializerProvider)
>> line: 22
>> MapSerializer.serializeFields(Map<?,?>, JsonGenerator,
>> SerializerProvider) line: 257
>>  MapSerializer.serialize(Map<?,?>, JsonGenerator, SerializerProvider)
>> line: 177
>>  MapSerializer.serialize(Object, JsonGenerator, SerializerProvider)
>> line: 22
>> MapSerializer.serializeFields(Map<?,?>, JsonGenerator,
>> SerializerProvider) line: 257
>>  MapSerializer.serialize(Map<?,?>, JsonGenerator, SerializerProvider)
>> line: 177
>>  MapSerializer.serialize(Object, JsonGenerator, SerializerProvider)
>> line: 22
>> ContainerSerializers$IndexedListSerializer.serializeContents(List<?>,
>> JsonGenerator, SerializerProvider) line: 291
>>  ContainerSerializers$IndexedListSerializer.serializeContents(Object,
>> JsonGenerator, SerializerProvider) line: 242
>>  
>> ContainerSerializers$IndexedListSerializer(ContainerSerializers$AsArraySerializer<T>).serialize(T,
>> JsonGenerator, SerializerProvider) line: 130
>>  BeanPropertyWriter.serializeAsField(Object, JsonGenerator,
>> SerializerProvider) line: 428
>>  BeanSerializer.serializeFields(Object, JsonGenerator,
>> SerializerProvider) line: 245
>>  BeanSerializer.serialize(Object, JsonGenerator, SerializerProvider)
>> line: 212
>> StdSerializerProvider._serializeValue(JsonGenerator, Object) line: 587
>>  StdSerializerProvider.serializeValue(SerializationConfig,
>> JsonGenerator, Object, SerializerFactory) line: 245
>>  ObjectMapper(ObjectMapper)._configAndWriteValue(JsonGenerator, Object)
>> line: 1993
>> ObjectMapper(ObjectMapper).writeValue(OutputStream, Object) line: 1563
>> ...
>>
>>
>>
>>
>
_______________________________________________
jetty-users mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/jetty-users

Reply via email to