1. 20 May, 2019 2 commits
    • Julien Muchembled's avatar
      WIP: Make admin node a web-app · a4846b10
      Julien Muchembled authored
      The goal is to get rid off the neoctl command-line tool, and to manage the
      cluster via a web browser, or tools like 'wget'. Then, it will be possible to
      provide an web user interface to connect to the underlying DB of any storage
      node, usually a SQL client.
      
      The design of admin app is finished:
      - it's threaded like clients
      - it's a WSGI app
      
      I also hacked a HTTP API as quickly as possible to make all tests pass.
      
      TODO:
      - SSL
      - define a better HTTP API
      - there's no UI at all yet
      - remove all unused packets from the protocol (those that were only used
        between neoctl and admin node)
      
      There are a few dead files, not deleted yet, in case that they contain a few
      pieces of useful code:
       neo/neoctl/app.py
       neo/neoctl/handler.py
       neo/scripts/neoctl.py
      a4846b10
    • Julien Muchembled's avatar
  2. 09 May, 2019 3 commits
  3. 30 Apr, 2019 3 commits
    • Julien Muchembled's avatar
      importer: fix writeback of transactions during which readCurrent() was used · 042f5ac0
      Julien Muchembled authored
      Contrary to FileStorage, NEO remembers uses of readCurrent().
      042f5ac0
    • Julien Muchembled's avatar
      68f26415
    • Julien Muchembled's avatar
      master: fix crash in STARTING_BACKUP when connecting to an upstream secondary master · dba07e72
      Julien Muchembled authored
      This fixes the following assertion:
      
        Traceback (most recent call last):
          File "neo/master/app.py", line 172, in run
            self._run()
          File "neo/master/app.py", line 182, in _run
            self.playPrimaryRole()
          File "neo/master/app.py", line 302, in playPrimaryRole
            self.backup_app.provideService())
          File "neo/master/backup_app.py", line 114, in provideService
            node, conn = bootstrap.getPrimaryConnection()
          File "neo/lib/bootstrap.py", line 74, in getPrimaryConnection
            poll(1)
          File "neo/lib/event.py", line 160, in poll
            to_process.process()
          File "neo/lib/connection.py", line 504, in process
            self._handlers.handle(self, self._queue.pop(0))
          File "neo/lib/connection.py", line 92, in handle
            self._handle(connection, packet)
          File "neo/lib/connection.py", line 107, in _handle
            pending[0][1].packetReceived(connection, packet)
          File "neo/lib/handler.py", line 125, in packetReceived
            self.dispatch(*args)
          File "neo/lib/handler.py", line 75, in dispatch
            method(conn, *args, **kw)
          File "neo/lib/handler.py", line 159, in notPrimaryMaster
            assert primary != self.app.server
        AttributeError: 'BackupApplication' object has no attribute 'server'
      dba07e72
  4. 28 Apr, 2019 3 commits
    • Julien Muchembled's avatar
      qa: add testrunner options to dump/check the format of network packets · e3cd5c5b
      Julien Muchembled authored
      With the switch to msgpack, there was no schema anymore whereas it was
      sometimes used for both automatic conversion (e.g. the last argument of
      AskStoreTransaction must now be explicitly cast to list) and type checking.
      
      This somewhat reintroduces a kind of schema that:
      - is used by the test suite for type checking
      - can be generated automatically from the test suite
        when one change the procotol
      e3cd5c5b
    • Julien Muchembled's avatar
      protocol: switch to msgpack for packet serialization · 9d0bf97a
      Julien Muchembled authored
      Not only for performance reasons (at least 3% faster) but also because of
      several ugly things in the way packets were defined:
      - packet field names, which are only documentary; for roots fields,
        they even just duplicate the packet names
      - a lot of repetitions for packet names, and even confusion between the name
        of the packet definition and the name of the actual notify/request packet
      - the need to implement field types for anything, like PByte to support new
        compression formats, since PBoolean is not enough
      
      neo/lib/protocol.py is now much smaller.
      9d0bf97a
    • Julien Muchembled's avatar
      Release version 1.12 · 6332112c
      Julien Muchembled authored
      6332112c
  5. 27 Apr, 2019 12 commits
  6. 26 Apr, 2019 4 commits
  7. 16 Apr, 2019 5 commits
  8. 05 Apr, 2019 3 commits
  9. 01 Apr, 2019 1 commit
  10. 21 Mar, 2019 2 commits
  11. 16 Mar, 2019 1 commit
    • Julien Muchembled's avatar
      importer: fix possible data loss on writeback · e387ad59
      Julien Muchembled authored
      If the source DB is lost during the import and then restored from a backup,
      all new transactions have to written back again on resume. It is the most
      common case for which the writeback hits the maximum number of transactions
      per partition to process at each iteration; the previous code was buggy in
      that it could skip transactions.
      e387ad59
  12. 11 Mar, 2019 1 commit