Bug 867467

Summary: httpd restart fails for 2 consecutive restarts
Product: Red Hat Enterprise Linux 6 Reporter: Martin Kosek <mkosek>
Component: httpdAssignee: Luboš Uhliarik <luhliari>
Status: CLOSED NEXTRELEASE QA Contact: BaseOS QE Security Team <qe-baseos-security>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 6.4CC: jorton
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2012-10-17 15:18:56 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 845405    

Description Martin Kosek 2012-10-17 14:55:32 UTC
Description of problem:
When IPA replica install process does 2 consecutive httpd restarts, the second httpd restart may fail and thus IPA replica installation will fail.

See Bug 845405 for details.

Version-Release number of selected component (if applicable):
httpd-2.2.15-19.el6.x86_64

How reproducible:
I think I managed to reproduce it with this simple sequence:

# service httpd restart && service httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]
Stopping httpd:                                            [FAILED]
Starting httpd: (98)Address already in use: make_sock: could not bind to address [::]:80
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
                                                           [FAILED]

When I tested this sequence on Fedora 18, it worked fine. It just probably waited until the ports could be bound.

Steps to Reproduce:
1. See above - run  2 consecutive service restarts
2.
3.
  
Actual results:
Second restart fails.

Expected results:
Second restart succeeds.

Additional info:

Comment 2 Joe Orton 2012-10-17 15:18:56 UTC
The answer is "Don't do that", I'm afraid.

With the sysV init scripts we can't make a strong guarantee that httpd is immediately in a state where the service script will always DTRT.  Adding a sleep(1) or similar should help, but if you are loading weird modules like mod_nss with complex startup processing, you might need more than 1 second delay.

With systemd we do make a strong guarantee and this kind of thing really works properly.