Bug 700461

Summary: ProcessInfo in resource context never refreshes
Product: [Other] RHQ Project Reporter: Lukas Krejci <lkrejci>
Component: AgentAssignee: RHQ Project Maintainer <rhq-maint>
Status: CLOSED CURRENTRELEASE QA Contact: Mike Foley <mfoley>
Severity: high Docs Contact:
Priority: high    
Version: 3.0.1CC: hrupp, mazz
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
: 702691 769995 (view as bug list) Environment:
Last Closed: 2013-09-02 07:18:30 UTC Type: ---
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: 678340, 700616, 702690, 753929    

Description Lukas Krejci 2011-04-28 13:08:25 UTC
Description of problem:

the ResourceContext instance the plugins can use to get info about, well, the context the resource component is running in contains the getNativeProcess() method which should contain the information about the current native process of the native resource.

This process information should be refreshed whenever the process is found not running, i.e. we should transparently handle process restarts.

If the process of the resource is restarted outside of agent control, the process info never refreshes and the component therefore has stale info.

Version-Release number of selected component (if applicable):
RHQ 3.0.1

How reproducible:
always

Steps to Reproduce:
1. discover and inventory an apache instance
2. Check the pid reported by the resourceContext.getNativeProcess().getPid()
3. restart apache from commandline, while the agent is running
4. repeat 2.
  
Actual results:
The pid reported in 2. and 4. is the same

Expected results:
4. should report the pid of the new apache process

Additional info:

This is not explicitly testable in any other way than by actually debugging the code, so QA will not be able to test this.

Comment 1 John Mazzitelli 2011-04-28 14:52:27 UTC
this has been an issue for at least 3 years :) From our initial git commit back in Feb 2008, you'll see this:

    public ProcessInfo getNativeProcess() {
        if ((this.processInfo == null) || !this.processInfo.isRunning()) {
            // TODO: should we null out processInfo?  if it isn't running, the old processInfo is no longer valid

The TODO shows that we knew this might be an issue. I remember talking about this issue a long time ago - not sure if we did anything about it (apparently, we didn't).

But, this would be the area that we'd have to touch to correct this (ResourceContext.java)

Comment 2 Lukas Krejci 2011-04-28 18:21:36 UTC
Well, the actual issue is that "this.processInfo.isRunning()" returns true even if the process no longer exists...

We need a call to processInfo.refresh() in the ResourceContext.getNativeProcess() to refresh that info.

Comment 3 Lukas Krejci 2011-05-06 15:13:11 UTC
Fixed in the release-3.0.1 branch:

commit e59a0a42b5447a44b0a89f2a836d5750a39f3b6b
Author: Lukas Krejci <lkrejci>
Date:   Fri Apr 29 19:12:27 2011 +0200

    BZ 700461 - ResourceContext.getNativeProcess() now always reports the current process info or null if no process exists for given resource.

Comment 4 Mike Foley 2011-06-10 13:05:51 UTC
per comment #1, this is untestable.

Comment 5 Heiko W. Rupp 2013-09-02 07:18:30 UTC
Bulk closing of issues that were VERIFIED, had no target release and where the status changed more than a year ago.