Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Z
ZODB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
ZODB
Commits
0a13c2d4
Commit
0a13c2d4
authored
Jul 19, 2005
by
Tim Peters
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Internal 3.5a5 release.
parent
b795c11a
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
68 additions
and
21 deletions
+68
-21
NEWS.txt
NEWS.txt
+17
-2
doc/guide/zodb.tex
doc/guide/zodb.tex
+1
-1
setup.py
setup.py
+1
-1
src/ThreadedAsync/LoopCallback.py
src/ThreadedAsync/LoopCallback.py
+46
-14
src/ZEO/__init__.py
src/ZEO/__init__.py
+1
-1
src/ZEO/version.txt
src/ZEO/version.txt
+1
-1
src/ZODB/__init__.py
src/ZODB/__init__.py
+1
-1
No files found.
NEWS.txt
View file @
0a13c2d4
What's new in ZODB3 3.5a
5
?
What's new in ZODB3 3.5a
6
?
==========================
Release date: DD-MMM-2005
Following is combined news from internal releases (to support ongoing
Zope3 development). These are the dates of the internal releases:
- 3.5a5 DD-MMM-2005
- 3.5a6 DD-MMM-2005
- 3.5a5 19-Jul-2005
- 3.5a4 14-Jul-2005
- 3.5a3 17-Jun-2005
- 3.5a2 16-Jun-2005
...
...
@@ -83,6 +84,13 @@ Tools
ThreadedAsync.LoopCallback
--------------------------
- (3.5a5) This once again physically replaces Python's ``asyncore.loop``
function with its own loop function, because it turns out Zope relied on
the seemingly unused ``LoopCallback.exit_status`` global, which was
removed in the change described below. Python's ``asyncore.loop`` is again
not invoked, so any breakpoints or debugging prints added to that are again
"lost".
- (3.5a4) This replaces Python's ``asyncore.loop`` function with its own, in
order to get notified when ``loop()`` is first called. The signature of
``asyncore.loop`` changed in Python 2.4, but ``LoopCallback.loop``'s
...
...
@@ -225,6 +233,13 @@ FileStorage
ThreadedAsync.LoopCallback
--------------------------
- (3.4.1a6) This once again physically replaces Python's ``asyncore.loop``
function with its own loop function, because it turns out Zope relied on
the seemingly unused ``LoopCallback.exit_status`` global, which was
removed in the change described below. Python's ``asyncore.loop`` is again
not invoked, so any breakpoints or debugging prints added to that are again
"lost".
- (3.4.1a1) This replaces Python's ``asyncore.loop`` function with its own,
in order to get notified when ``loop()`` is first called. The signature of
``asyncore.loop`` changed in Python 2.4, but ``LoopCallback.loop``'s
...
...
doc/guide/zodb.tex
View file @
0a13c2d4
\documentclass
{
howto
}
\title
{
ZODB/ZEO Programming Guide
}
\release
{
3.5a
4
}
\release
{
3.5a
5
}
\date
{
\today
}
\author
{
A.M.
\
Kuchling
}
...
...
setup.py
View file @
0a13c2d4
...
...
@@ -264,7 +264,7 @@ class MyDistribution(Distribution):
doclines
=
__doc__
.
split
(
"
\
n
"
)
setup
(
name
=
"ZODB3"
,
version
=
"3.5a
4
"
,
version
=
"3.5a
5
"
,
maintainer
=
"Zope Corporation"
,
maintainer_email
=
"zodb-dev@zope.org"
,
url
=
"http://www.zope.org/Wikis/ZODB"
,
...
...
src/ThreadedAsync/LoopCallback.py
View file @
0a13c2d4
...
...
@@ -29,7 +29,10 @@ socket map as its first argument.
import
asyncore
import
thread
_original_asyncore_loop
=
asyncore
.
loop
# Zope pokes a non-None value into exit_status when it wants the loop()
# function to exit. Indeed, there appears to be no other way to tell
# Zope3 to shut down.
exit_status
=
None
_loop_lock
=
thread
.
allocate_lock
()
_looping
=
None
# changes to socket map when loop() starts
...
...
@@ -66,14 +69,36 @@ def remove_loop_callback(callback):
del
_loop_callbacks
[
i
]
return
# Caution: the signature of asyncore.loop changed in Python 2.4.
# That's why we use `args` and `kws` instead of spelling out the
# "intended" arguments. Since we _replace_ asyncore.loop with this
# loop(), we need to be compatible with all signatures.
def
loop
(
*
args
,
**
kws
):
# Because of the exit_status magic, we can't just invoke asyncore.loop(),
# and that's a shame.
# The signature of asyncore.loop changed between Python 2.3 and 2.4, and
# this loop() has 2.4's signature, which added the optional `count` argument.
# Since we physically replace asyncore.loop with this `loop`, and want
# compatibility with both Pythons, we need to support the most recent
# signature. Applications running under 2.3 should (of course) avoid using
# the `count` argument, since 2.3 doesn't have it.
def
loop
(
timeout
=
30.0
,
use_poll
=
False
,
map
=
None
,
count
=
None
):
global
_looping
global
exit_status
map
=
kws
.
get
(
"map"
,
asyncore
.
socket_map
)
exit_status
=
None
if
map
is
None
:
map
=
asyncore
.
socket_map
# This section is taken from Python 2.3's asyncore.loop, and is more
# elaborate than the corresponding section of 2.4's: in 2.4 poll2 and
# poll3 are aliases for the same function, in 2.3 they're different
# functions.
if
use_poll
:
if
hasattr
(
select
,
'poll'
):
poll_fun
=
asyncore
.
poll3
else
:
poll_fun
=
asyncore
.
poll2
else
:
poll_fun
=
asyncore
.
poll
# The loop is about to start: invoke any registered callbacks.
_loop_lock
.
acquire
()
try
:
_looping
=
map
...
...
@@ -83,7 +108,15 @@ def loop(*args, **kws):
finally
:
_loop_lock
.
release
()
result
=
_original_asyncore_loop
(
*
args
,
**
kws
)
# Run the loop. This is 2.4's logic, with the addition that we stop
# if/when this module's exit_status global is set to a non-None value.
if
count
is
None
:
while
map
and
exit_status
is
None
:
poll_fun
(
timeout
,
map
)
else
:
while
map
and
count
>
0
and
exit_status
is
None
:
poll_fun
(
timeout
,
map
)
count
-=
1
_loop_lock
.
acquire
()
try
:
...
...
@@ -91,16 +124,15 @@ def loop(*args, **kws):
finally
:
_loop_lock
.
release
()
return
result
# Evil: rebind asyncore.loop to the above loop() function.
#
# Code should explicitly call ThreadedAsync.loop() instead of asyncore.loop().
# Most of ZODB has been fixed, but ripping this out may break 3rd party code.
# Maybe we should issue a warning and let it continue for a while. Or
# maybe we should get rid of this mechanism entirely, and have each ZEO
# piece that needs one run its own asyncore loop in its own thread.
# Maybe we should issue a warning and let it continue for a while (NOTE: code
# to raise DeprecationWarning was written but got commented out below; don't
# know why it got commented out). Or maybe we should get rid of this
# mechanism entirely, and have each piece that needs one run its own asyncore
# loop in its own thread.
##def deprecated_loop(*args, **kws):
## import warnings
...
...
src/ZEO/__init__.py
View file @
0a13c2d4
...
...
@@ -22,4 +22,4 @@ ZEO is now part of ZODB; ZODB's home on the web is
"""
# The next line must use double quotes, so release.py recognizes it.
version
=
"3.5a
4
"
version
=
"3.5a
5
"
src/ZEO/version.txt
View file @
0a13c2d4
3.5a
4
3.5a
5
src/ZODB/__init__.py
View file @
0a13c2d4
...
...
@@ -13,7 +13,7 @@
##############################################################################
# The next line must use double quotes, so release.py recognizes it.
__version__
=
"3.5a
4
"
__version__
=
"3.5a
5
"
import
sys
import
__builtin__
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment