Commit b56fc3f0 authored by Guido van Rossum's avatar Guido van Rossum

Move the ZEO parameters into a <zeo> section.

parent ead3ccff
...@@ -120,14 +120,18 @@ class Options: ...@@ -120,14 +120,18 @@ class Options:
""" """
self.load_configuration() self.load_configuration()
def load_schema(self):
here = os.path.dirname(ZEO.__file__)
schemafile = os.path.join(here, "schema.xml")
self.schema = ZConfig.loadSchema(schemafile)
def load_configuration(self): def load_configuration(self):
if not self.configuration: if not self.configuration:
return return
here = os.path.dirname(ZEO.__file__) self.load_schema()
schemafile = os.path.join(here, "schema.xml")
schema = ZConfig.loadSchema(schemafile)
try: try:
self.rootconf = ZConfig.loadConfig(schema, self.configuration)[0] self.rootconf, nil = ZConfig.loadConfig(self.schema,
self.configuration)
except ZConfig.ConfigurationError, errobj: except ZConfig.ConfigurationError, errobj:
self.usage(str(errobj)) self.usage(str(errobj))
...@@ -253,12 +257,12 @@ class ZEOOptions(Options): ...@@ -253,12 +257,12 @@ class ZEOOptions(Options):
def load_zeoconf(self): def load_zeoconf(self):
# Get some option values from the configuration # Get some option values from the configuration
if self.family is None: if self.family is None:
self.family = self.rootconf.address.family self.family = self.rootconf.zeo.address.family
self.address = self.rootconf.address.address self.address = self.rootconf.zeo.address.address
self.read_only = self.rootconf.read_only self.read_only = self.rootconf.zeo.read_only
self.transaction_timeout = self.rootconf.transaction_timeout self.transaction_timeout = self.rootconf.zeo.transaction_timeout
self.invalidation_queue_size = 100 self.invalidation_queue_size = self.rootconf.zeo.invalidation_queue_size
def load_logconf(self): def load_logconf(self):
# Get logging options from conf, unless overridden by environment # Get logging options from conf, unless overridden by environment
......
<schema type="ZEO"> <schema>
<!-- XXX This schema still needs logging support. --> <!-- XXX This schema still needs logging support. -->
...@@ -10,53 +10,59 @@ ...@@ -10,53 +10,59 @@
<!-- Use the storage types defined by ZODB. --> <!-- Use the storage types defined by ZODB. -->
<import src="../ZODB/config.xml"/> <import src="../ZODB/config.xml"/>
<key name="address" datatype="socket-address" <sectiontype name="zeo">
required="yes">
<description>
The address at which the server should listen. This can be in
the form 'host:port' to signify a TCP/IP connection or a
pathname string to signify a Unix domain socket connection (at
least one '/' is required). A hostname may be a DNS name or a
dotted IP address. If the hostname is omitted, the platform's
default behavior is used when binding the listening socket (''
is passed to socket.bind() as the hostname portion of the
address).
</description>
</key>
<key name="read-only" datatype="boolean" <key name="address" datatype="socket-address"
required="no" required="yes">
default="false"> <description>
<description> The address at which the server should listen. This can be in
Flag indicating whether the server should operate in read-only the form 'host:port' to signify a TCP/IP connection or a
mode. Defaults to false. Note that even if the server is pathname string to signify a Unix domain socket connection (at
operating in writable mode, individual storages may still be least one '/' is required). A hostname may be a DNS name or a
read-only. But if the server is in read-only mode, no write dotted IP address. If the hostname is omitted, the platform's
operations are allowed, even if the storages are writable. Note default behavior is used when binding the listening socket (''
that pack() is considered a read-only operation. is passed to socket.bind() as the hostname portion of the
</description> address).
</key> </description>
</key>
<key name="invalidation-queue-size" datatype="integer" <key name="read-only" datatype="boolean"
required="no" required="no"
default="100"> default="false">
<description> <description>
The storage server keeps a queue of the objects modified by the Flag indicating whether the server should operate in read-only
last N transactions, where N == invalidation_queue_size. This mode. Defaults to false. Note that even if the server is
queue is used to speed client cache verification when a client operating in writable mode, individual storages may still be
disconnects for a short period of time. read-only. But if the server is in read-only mode, no write
</description> operations are allowed, even if the storages are writable. Note
</key> that pack() is considered a read-only operation.
</description>
</key>
<key name="transaction-timeout" datatype="integer" <key name="invalidation-queue-size" datatype="integer"
required="no"> required="no"
<description> default="100">
The maximum amount of time to wait for a transaction to commit <description>
after acquiring the storage lock, specified in seconds. If the The storage server keeps a queue of the objects modified by the
transaction takes too long, the client connection will be closed last N transactions, where N == invalidation_queue_size. This
and the transaction aborted. queue is used to speed client cache verification when a client
</description> disconnects for a short period of time.
</key> </description>
</key>
<key name="transaction-timeout" datatype="integer"
required="no">
<description>
The maximum amount of time to wait for a transaction to commit
after acquiring the storage lock, specified in seconds. If the
transaction takes too long, the client connection will be closed
and the transaction aborted.
</description>
</key>
</sectiontype>
<section type="zeo" name="*" required="yes" attribute="zeo" />
<key name="monitor-address" datatype="socket-address" required="no"> <key name="monitor-address" datatype="socket-address" required="no">
<description> <description>
......
...@@ -81,7 +81,9 @@ class TestZEOOptions(TestOptions): ...@@ -81,7 +81,9 @@ class TestZEOOptions(TestOptions):
output_args = [] output_args = []
configdata = """ configdata = """
address 5555 <zeo>
address 5555
</zeo>
<filestorage fs> <filestorage fs>
path Data.fs path Data.fs
</filestorage> </filestorage>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment