1. 23 Nov, 2016 9 commits
    • Kirill Smelkov's avatar
      . · fa68b9e4
      Kirill Smelkov authored
      fa68b9e4
    • Kirill Smelkov's avatar
      Merge branch 'x/go' into t · 0b751f74
      Kirill Smelkov authored
      * x/go:
        .
        .
        .
        X notes on partition table
        .
        .
        .
        .
        .
        .
      0b751f74
    • Kirill Smelkov's avatar
      . · 0d0ce246
      Kirill Smelkov authored
      0d0ce246
    • Kirill Smelkov's avatar
      Merge branch 'master' into x/go · f84a1095
      Kirill Smelkov authored
      * master:
        client: fix item eviction from cache, which could break loading from storage
        Bump protocol version for new read-only mode in BACKUPING state
        backup: Teach cluster in BACKUPING state to also serve regular ZODB clients in read-only mode
        tests/threaded: Add handy shortcuts to NEOCluster to concisely check cluster properties in tests
      f84a1095
    • Kirill Smelkov's avatar
      . · cb46ccd2
      Kirill Smelkov authored
      cb46ccd2
    • Kirill Smelkov's avatar
      . · 6c996814
      Kirill Smelkov authored
      6c996814
    • Kirill Smelkov's avatar
      . · d0c3276a
      Kirill Smelkov authored
      d0c3276a
    • Kirill Smelkov's avatar
    • Kirill Smelkov's avatar
      Merge branch 'master' into t · 5d2baac5
      Kirill Smelkov authored
      * master:
        client: fix item eviction from cache, which could break loading from storage
        Bump protocol version for new read-only mode in BACKUPING state
        backup: Teach cluster in BACKUPING state to also serve regular ZODB clients in read-only mode
        tests/threaded: Add handy shortcuts to NEOCluster to concisely check cluster properties in tests
      5d2baac5
  2. 21 Nov, 2016 2 commits
    • Julien Muchembled's avatar
      client: fix item eviction from cache, which could break loading from storage · 4ef05b9e
      Julien Muchembled authored
      `ClientCache._oid_dict` shall not have empty values. For a given oid, when the
      last item is removed from the cache, the oid must be removed as well to free
      memory. In some cases, this was not done.
      
      A consequence of this bug is the following exception:
      
          ERROR ZODB.Connection Couldn't load state for 0x02d1e1e4
          Traceback (most recent call last):
            File "ZODB/Connection.py", line 860, in setstate
              self._setstate(obj)
            File "ZODB/Connection.py", line 901, in _setstate
              p, serial = self._storage.load(obj._p_oid, '')
            File "neo/client/Storage.py", line 82, in load
              return self.app.load(oid)[:2]
            File "neo/client/app.py", line 358, in load
              self._cache.store(oid, data, tid, next_tid)
            File "neo/client/cache.py", line 228, in store
              prev = item_list[-1]
          IndexError: list index out of range
      4ef05b9e
    • Julien Muchembled's avatar
  3. 18 Nov, 2016 1 commit
  4. 15 Nov, 2016 2 commits
    • Kirill Smelkov's avatar
      backup: Teach cluster in BACKUPING state to also serve regular ZODB clients in read-only mode · d4944062
      Kirill Smelkov authored
      A backup cluster for tids <= backup_tid has all data to provide regular
      read-only ZODB service. Having regular ZODB access to the data can be
      handy e.g. for externally verifying data for consistency between
      main and backup clusters. Peeking around without disturbing main
      cluster might be also useful sometimes.
      
      In this patch:
      
      - master & storage nodes are taught:
      
          * to instantiate read-only or regular client service handler depending on cluster state:
            RUNNING   -> regular
            BACKINGUP -> read-only
      
          * in read-only client handler:
            + to reject write-related operations
            + to provide read operations but adjust semantic as last_tid in the database
              would be = backup_tid
      
      - new READ_ONLY_ACCESS protocol error code is introduced so that client can
        raise POSException.ReadOnlyError upon receiving it.
      
      I have not implemented back-channel for invalidations in read-only mode (yet ?).
      This way once a client connects to cluster in backup state, it won't see
      new data fetched by backup cluster from upstream after client connected.
      
      The reasons invalidations are not implemented is that for now (imho)
      there is no off-hand ready infrastructure to get updates from
      replicating node on transaction-by-transaction basis (it currently only
      notifies when whole batch is done). For consistency verification (main
      reason for this patch) we also don't need invalidations to work, as in
      that task we always connect afresh to backup. So I simply only put
      relevant TODOs about invalidations for now.
      
      The patch is not very polished but should work.
      
      /reviewed-on !4
      d4944062
    • Kirill Smelkov's avatar
  5. 13 Nov, 2016 1 commit
  6. 10 Nov, 2016 4 commits
  7. 04 Nov, 2016 3 commits
  8. 02 Nov, 2016 2 commits
  9. 01 Nov, 2016 1 commit
  10. 31 Oct, 2016 1 commit
  11. 30 Oct, 2016 1 commit
  12. 28 Oct, 2016 4 commits
  13. 27 Oct, 2016 1 commit
    • Iliya Manolov's avatar
      neoctl: make 'print ids' command display time of TIDs · d9dd39f0
      Iliya Manolov authored
      Currently, the command "neoctl [arguments] print ids" has the following output:
      
          last_oid = 0x...
          last_tid = 0x...
          last_ptid = ...
      
      or
      
          backup_tid = 0x...
          last_tid = 0x...
          last_ptid = ...
      
      depending on whether the cluster is in normal or backup mode.
      
      This is extremely unreadable since the admin is often interested in the time that corresponds to each tid. Now the output is:
      
          last_oid = 0x...
          last_tid = 0x... (yyyy-mm-dd hh:mm:ss.ssssss)
          last_ptid = ...
      
      or
      
          backup_tid = 0x... (yyyy-mm-dd hh:mm:ss.ssssss)
          last_tid = 0x... (yyyy-mm-dd hh:mm:ss.ssssss)
          last_ptid = ...
      
      /reviewed-on !2
      d9dd39f0
  14. 25 Oct, 2016 1 commit
  15. 24 Oct, 2016 3 commits
  16. 21 Oct, 2016 1 commit
  17. 19 Oct, 2016 3 commits