1. 01 Jan, 2009 1 commit
  2. 25 Sep, 2008 1 commit
  3. 27 Feb, 2008 1 commit
  4. 08 Feb, 2008 1 commit
  5. 31 Oct, 2007 1 commit
    • Barry Warsaw's avatar
      Much progress, though not perfect, on migrating to SQLAlchemy 0.4 and Elixir · f321d85d
      Barry Warsaw authored
      0.4.  Lots of things changes, which broke lots of our code.  There are still a
      couple of failures in the test suite that I don't understand.  It seems that
      for pending.txt and requests.txt, sometimes strings come back from the
      database as 8-bit strings and other times as unicodes.  It's impossible to
      make these tests work both separately and together.
      
      users.txt is also failing intermittently.  Lots of different behavior between
      running the full test suite all together and running individual tests.  Sigh.
      
      Note also that actually, Elixir 0.4.0 doesn't work for us.  There's a bug in
      that version that prevented zope.interfaces and Elixir working together.  Get
      the latest 0.4.0 from source to fix this.
      
      Other changes include:
      
      - Remove Mailman/lockfile.py.  While I haven't totally eliminated locking, I
        have released the lockfile as a separate Python package called locknix,
        which Mailman 3.0 now depends on.
      
      - Renamed Mailman/interfaces/messagestore.py and added an IMessage interface.
      
      - bin/testall raises turns on SQLALCHEMY_ECHO when the verbosity is above 3
        (that's three -v's because the default verbosity is 1).
      
      - add_domain() in config files now allows url_host to be optional.  If not
        given, it defaults to email_host.
      
      - Added a non-public interface IDatabase._reset() used by the test suite to
        zap the database between doctests.  Added an implementation in the model
        which just runs through all rows in all entities, deleting them.
      
      - [I]Pending renamed to [I]Pended
      
      - Don't allow Pendings.add() to infloop.
      
      - In the model's User impelementations, we don't need to append or remove the
        address when linking and unlinking.  By setting the address.user attribute,
        SQLAlchemy appears to do the right thing, though I'm not 100% sure of that
        (see the above mentioned failures).
      f321d85d
  6. 11 Oct, 2007 1 commit
    • Barry Warsaw's avatar
      General cleanups some of which is even tested <wink>. Mailman.LockFile module · 1ad73a52
      Barry Warsaw authored
      is moved to Mailman.lockfile.
      
      Remove a few more MailList methods that aren't used any more, e.g. the lock
      related stuff, the Save() and CheckValues() methods, as well as
      ChangeMemberName().
      
      Add a missing import to lifecycle.py.
      
      We no longer need withlist to unlock the mailing list.  Also, expose
      config.db.flush() in the namespace of withlist directly, under 'flush'.
      1ad73a52
  7. 19 Jan, 2007 1 commit
  8. 27 Aug, 2005 1 commit
  9. 02 Dec, 2002 1 commit
  10. 04 Nov, 2002 1 commit
  11. 16 Mar, 2002 1 commit
  12. 25 May, 2001 1 commit
  13. 18 May, 2001 1 commit
  14. 15 Feb, 2001 1 commit
  15. 22 Sep, 2000 2 commits
    • jhylton's avatar
      misc cleanup · 327e563a
      jhylton authored
      replace open calls with explicit open_ex
      add load method with code from __init__
      327e563a
    • jhylton's avatar
      Fix index generation bug that oocasionally prevented messages from · ad4ba52f
      jhylton authored
      appearing in index.  pipermail generated several indexes by assuming
      that date was unique.  If two messages arrived with, e.g., the same
      author and date, then the author index treated them as identical.
      As a result, both messages were archived, but only the last one was
      included in the index.  Solution is to always include the msgid, which
      is unique, in the index key.
      
      Change database keys to combine elements using tuples instead of
      string concatenation with \000 as separator.
      
      Fix was accomplished by refactoring on pipermail.Database and its
      subclasses.  Push index-key generation into common concrete base class
      Database; rename abstract base class to DatabaseInterface.  Break up
      addArticle method into several pieces.
      
      TBD There is still more refactoring to do on Database class.
      
      Because date key has changed, HyperDatabase method to return first and
      last date changed to reflect format of date key.
      
      Refactor pipermail.T.add_article into several pieces.
      ad4ba52f
  16. 23 Jun, 2000 1 commit
    • bwarsaw's avatar
      DumbBTree.__init__(): Rewrote the file opening and unmarshaling code · c7a89854
      bwarsaw authored
      to be more robust so that if either fail, we end up with an empty
      self.dict and self.sorted.
      
      Note that the archiver subprocess will still fail with an exception.
      Fixing this will require much more work on the archiver as a whole,
      and isn't worth it right now.  But this fix averts the problem when
      regenerating the archive from scratch using bin/arch, so at least
      corrupt archives can be rebuilt.
      c7a89854
  17. 21 Mar, 2000 1 commit
  18. 30 Oct, 1999 1 commit
  19. 21 Aug, 1999 1 commit
    • bwarsaw's avatar
      Extensive changes based on Jeremy Hylton's investigations. These · 54913081
      bwarsaw authored
      should considerably help the performance of the archiver.
      Specifically:
      
      class DumbBTree: Don't sort the self.sorted list unless some client is
      actually traversing the data structure.  This saves a lot of work when
      items are added.  See also Jeremy's XXX comment for further
      optimization ideas.
      
      class HyperDatabase: Jeremy also has questions about the usefulness of
      the cache used here.  Because the items are traversed in linear order,
      there isn't much locality of reference, so cache eviction doesn't buy
      you much (it's actually more expensive than just keeping everything in
      the cache, so that's what we do).  That's a space for time trade-off
      that might need a re-evaluation.
      
      Clearly, more work could be done to improve the performance of the
      archiver, but this should improve matters significantly.  Caveat: this
      has been only minimally tested in a production environment.
      
      I call this the Hylton Band-aid.
      54913081
  20. 01 Jul, 1999 1 commit
    • bwarsaw's avatar
      DumbBTree.clear(): New method to short-circuit clearing the btree. · 3bf91d8e
      bwarsaw authored
      This isn't part of the bsddb.btree interface assumed by Pipermail, but
      it's only used in one place and /dramatically/ improves Mailman's
      performance.
      
      HyperDatabase.clearIndex(): Use DumbBTree.clear().  These changes may
      not fix all the performance problems with Mailman, but certainly nails
      the most serious problem I've been experiencing.
      3bf91d8e
  21. 04 Nov, 1998 1 commit
    • bwarsaw's avatar
      Changes to avoid having to chmod files, which may fail. · 5ce88dfc
      bwarsaw authored
      Import open_ex() from Mailman.Utils and assign it to open in the
      module's globals, so this gets picked up before builtin open.  Saves
      rewriting lots of occurances of open(), but could be confusing when
      reading a method.  Hmmm...
      
      __openIndices(): If the `database' directory does not exist, create it
      specifically with mode = 02770.  We want o-rx so this directory is not
      accessible when the archive is public.  But we must have g+wxs or the
      competing processes (mail and web) that try to update these files
      (when a message is posted, or web approved after being held), can get
      to and write the files.
      5ce88dfc
  22. 26 Oct, 1998 1 commit
    • cotton's avatar
      changed the syntax of · bbb66f00
      cotton authored
      import Mailman.<module>
      <module> = Mailman.<module>
      to
      from Mailman import <module>
      I didn't realize you could do this, thanx for letting me know, Barry
      scott
      bbb66f00
  23. 22 Oct, 1998 2 commits
    • cotton's avatar
      code cleanup: put all the web archive related stuff into it's own sub · 73b134e8
      cotton authored
      package.
      Details:
      changed Makefile to add the sub package as a directory to make
      recursively in
      changed configure to make the replacements to
      Mailman/Archiver/Makefile.in
      changed Mailman/Makefile.in to add Archiver as a sub package
      moved Mailman/Archiver.py to Mailman/Archiver/Archiver.py and
            Mailman/Hyper* to Mailman/Archiver
            Mailman/pipermail.py to Mailman/Archiver/
      created Mailman/Archiver/__init__.py to do a "from Archiver import *"
      in order to make it's interface identical to previously.
      import change: changed imports to import Mailman.<module> from import
      <module> in order to accomodate the package import semantics, also
      localized <module> by calling <module> = Mailman.<module>. see diffs
      for details if this sounds confusing, it's not.  this change was
      applied to all of the moved files except pipermail, which didn't need
      it.
      did a basic new installation test to make sure all the
      Makefile/configure changes took place atleast basically correctly.
      scott
      73b134e8
    • cotton's avatar
      bug fix: Archiving mechansim · 4e72daaa
      cotton authored
      	the native python bsddb replacement wasn't protected in all
      	cases from HyperArch.Archive's locking. added a single global
      	lock uses the flock module to HyperDatabase.DumbBTree so that
      	only one process may access it at a time.
      specifics:
      	1) removed previously added locking around the
      	pipermail.T.__init__ line in HyperArch.Archive.__init__, as
      	the database locking should take care of this
      	2) added lock and unlock methods to HyperDatabase.DumbBTree
      	   making multple calls to unlock, and therefore multple calls
      	   to HyperDatabase.DumbBTree.close() ok, as the comments from
      	   pipermail indicate this might happen.
      scott
      4e72daaa
  24. 13 Oct, 1998 1 commit
  25. 09 Oct, 1998 1 commit
    • cotton's avatar
      All these changes are for implemented integrated pipermail based archives. · 8aa10fbd
      cotton authored
      Original patches are from The Dragon de Monsyne with the following changes:
      -added support for private archives as well as public
      -added support for archiving daily and weekly
      -made archiving happen in real time
      -replaced use of pipermail's BSDBDatabase with homegrown python version
      -took out the need for DocumentTemplate
      here's a listing of changed files and relevant changes:
      Makefile.in - added public_html/archives to installdirs
      Mailman/Archiver.py - changed ArchiveMail to do real time archiving
      Mailman/Defaults.py.in - added archive frequency and and archive url
      			 extension variables
      Mailman/MailList.py - changed .Save() to alter perms on public vs. private
      		      archives
      Mailman/htmlformat.py - changes directly from The Dragon do Monsyne's patches.
      			I don't know what they are exactly, but all the cgi's
      			seem to work fine, so I assume they are OK.
      Mailman/versions.py - changes to add archiving based variables back to the list
      Mailman/Cgi/private - changed to make it work with default installation and
      			made background white on login page
      src/Makefile.in	- changes to make all wrappers setuid mailman:
      		 since various processes may access an archive, and the
      		archiving mechanism uses "chmod", all archives must be owned
      		by mailman, so all wrappers need to be owned by and setuid mailman
      added files:
      Mailman/HyperArch.py - from The Dragon de Monsyne with changes made noted above
      Mailman/HyperDatabase.py - the replacement for pipermail.BSDBDatabase
      scott
      8aa10fbd