<html>
    <head>
      <base href="http://www.jacorb.org/bugzilla/" />
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - Request for non_existent() call on a dead object to not generate an error level log message"
   href="http://www.jacorb.org/bugzilla/show_bug.cgi?id=978">978</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Request for non_existent() call on a dead object to not generate an error level log message
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>JacORB
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>3.4
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>enhancement
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P5
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>ORB
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>jacorb-bugs@lists.spline.inf.fu-berlin.de
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>rhash@tibco.com
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Note: entering this to capture email discussion with Nick.

Currently in 3.4 calling non_existent() on a dead object generates an error
level log message with a stack trace. Very old versions of JacORB (e.g. 2.3.1)
just silently threw the exception and let the caller deal with it).

This is happening in the orb.Delegate, servant_preinvoke(), which throws a
OBJECT_NOT_EXIST, but the outer catch{} block is calling
   logger.error("unexpected exception during servant_preinvoke", e);
before it re-throws the exception.

Basically we think that a OBJ_NOT_EXISTS on a non_existent should just silently
return 'false' (without error level logging).

Suggestion from Nick:
########################
So we would have
   public ServantObject servant_preinvoke( org.omg.CORBA.Object self,
               String operation,
               @SuppressWarnings("rawtypes") Class expectedType ) and
/**
  * Only called by servant_preinvoke. Special case method used by non_existent
to disable logging for object not exist
  */
private ServantObject servant_preinvoke( org.omg.CORBA.Object self,
                String operation,
                @SuppressWarnings("rawtypes") Class expectedType,
        boolean logObjectNotExist )

The test case could do something similar to org.jacorb.test.util.JDKLoggerTest
where it checks the file contents for the log file. And the actual test could
reuse orb.NonExistentLocalTest.</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are the assignee for the bug.</li>
      </ul>
    </body>
</html>