BidServantActivator etherealize()
  • Looking at the etherealize() implementation
  • etherealize() gets the same parameters as incarnate() plus
    • the servant to deactivate
    • a cleanup flag, set to true if the POA is being deactivated
    • if cleanup is true, an active flag.
      • set to true if threads are still present in the Servant.
      • happens if the POA was not be able to wait for the threads to drain
  • This implementation can't handle clean up, hence the assert
  • Tell servant to write to stable storage if it still exists
    • This makes servant code simpler since no concurrent state access when writing.
  • Remove servant from our active map
  • Delete the servant as it is no longer needed.
    • If we ensure deactivation happens fast enough we achieve our performance goal of limiting the number of servants in memory
      • The current deactivates only on object deletion or the command line client

Next Slide >>