326de1eedb
We sometimes have need to send notifications to certain driver objects. A "notification" is a call to an object to indicate some condition has changed, and the callee may choose to act on that, or totally ignore it. Currently, the only notification is NodeRequestHandler.nodeReused() but this adds another notification for the Provider objects in preparation for static node driver changes. Since it is entirely probable we may want more in the future, this change organizes the notifications into proper classes for easy identification/manipulation. It will be a naming standard end these notification method names with "Notification". Change-Id: I905ef42bb434435cbe3cec0f5007981a5b789769
2.6 KiB
2.6 KiB
Developer's Guide
The following guide is intended for those interested in the inner workings of nodepool and its various processes.
Operation
If you send a SIGUSR2 to one of the daemon processes, Nodepool will
dump a stack trace for each running thread into its debug log. It is
written under the log bucket nodepool.stack_dump
. This is
useful for tracking down deadlock or otherwise slow threads.
Nodepool Builder
The following is the overall diagram for the nodepool-builder process and its most important pieces:
+-----------------+
| ZooKeeper |
+-----------------+
^ |
bld | | watch
+------------+ req | | trigger
| client +---------+ | +--------------------+
+------------+ | | NodepoolBuilderApp |
| +---+----------------+
| |
| | start/stop
| |
+-------v-------+ |
| <-------+
+---------> NodePool- <----------+
| +---+ Builder +---+ |
| | | | | |
| | +---------------+ | |
| | | |
done | | start start | | done
| | bld upld | |
| | | |
| | | |
+---------v---+ +---v----------+
| BuildWorker | | UploadWorker |
+-+-------------+ +-+--------------+
| BuildWorker | | UploadWorker |
+-+-------------+ +-+--------------+
| BuildWorker | | UploadWorker |
+-------------+ +--------------+
Drivers
nodepool.driver.Driver
nodepool.driver.Provider
nodepool.driver.ProviderNotifications
nodepool.driver.NodeRequestHandler
nodepool.driver.NodeRequestHandlerNotifications
nodepool.driver.ProviderConfig