Bug 959 - Oneway requests leave client unaware that server has crashed.
Summary: Oneway requests leave client unaware that server has crashed.
Status: ASSIGNED
Alias: None
Product: TAO
Classification: Unclassified
Component: ORB (show other bugs)
Version: 1.4.1
Hardware: x86 Windows 2000
: P5 minor
Assignee: DOC Center Support List (internal)
URL:
Depends on:
Blocks:
 
Reported: 2001-06-29 11:36 CDT by Jeff Parsons
Modified: 2004-05-16 07:15 CDT (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jeff Parsons 2001-06-29 11:36:58 CDT
On Win32 platforms, if a oneway request is made on a server that has crashed,
the client remains unaware of it. This is because, as far as we know, the MS
implementation of TCP does not have the write fail (and return with 
errno==EPIPE) as it does on many other platforms. A read must be performed to
find this out, either by explicitly reading or by setting a read mask on a
select(). Evidently, this is legal as far as TCP is concerned, just different
from other implementations. A workaround has been found at the application
level, by Chris Cleeland <cleeland_c@ociweb.com>, where perform_work() is
called with a zero time value between each oneway request. However, it would be
nice to have a workaround at the ORB level. The TAO Crash_On_Write test
demonstrates this condition. On Win32 platforms, no CORBA::TRANSIENT exceptions
are thrown after the server is deliberately crashed. The oneway requests just
get buffered by TCP.
Comment 1 Jeff Parsons 2001-06-29 11:37:58 CDT
Not a high priority at present, but this entry will keep us from forgetting it.
Comment 2 Johnny Willemsen 2004-05-13 07:54:05 CDT
This still happens with 1.4.1. The Crash_On_Write test on Windows gives the 
result below (client timeout is increased to 120 seconds). The oneway 
operations are really slowed down by the fact the server is down, before the 
server crash each line is printed about once a second, after the server crash 
once per 10 seconds.

C:\ACE\latest\ACE_wrappers\TAO\tests\Crash_On_Write>perl run_test.pl
(2556|128) Starting crash task
Finished iteration 0
Finished iteration 10
Finished iteration 20
Finished iteration 30
Finished iteration 40
Finished iteration 50
Finished iteration 60
Finished iteration 70
Finished iteration 80
Finished iteration 90
Finished iteration 100
Finished iteration 110
Finished iteration 120
Finished iteration 130
Finished iteration 140
Finished iteration 150
Finished iteration 160
Finished iteration 170
Finished iteration 180
Finished iteration 190
Finished iteration 200
Finished iteration 210
Finished iteration 220
Finished iteration 230
Finished iteration 240
Finished iteration 250
Finished iteration 260
Finished iteration 270
Finished iteration 280
Finished iteration 290
Finished iteration 300
Finished iteration 310
Finished iteration 320
Finished iteration 330
Finished iteration 340
Finished iteration 350
Finished iteration 360
Finished iteration 370
Finished iteration 380
Finished iteration 390
Finished iteration 400
Finished iteration 410
Finished iteration 420
Finished iteration 430
Finished iteration 440
Finished iteration 450
Finished iteration 460
Finished iteration 470
(2556|128) Sleep done, crashing the server
Aborting...
Abnormal program termination
Finished iteration 480
Finished iteration 490
Finished iteration 500
Finished iteration 510
Finished iteration 520
Finished iteration 530
Comment 3 Johnny Willemsen 2004-05-13 08:43:19 CDT
Jeff, because we know this test fails on Windows, shouldn't we disable the 
running of it on windows in our regression tests, this saves us from skipping 
this test in the log and we could add a remark then here when this is fixed, we 
must enable the test again?
Comment 4 Jeff Parsons 2004-05-13 08:54:09 CDT
Seems like a good idea to me, the Windows TCP situation is not likely to change 
any time soon.
Comment 5 Johnny Willemsen 2004-05-16 07:15:48 CDT
Disabled the Crash_On_Write tests on Win32. When this is fixed, enable this 
test again.