Uploaded image for project: 'Blazegraph (by SYSTAP)'
  1. Blazegraph (by SYSTAP)
  2. BLZG-579

Global Row Store Read on Cluster uses Tx

    Details

      Description

      Reads against the global row store on the cluster are using a read-only tx. This is wrong. Such reads should be shard-wise ACID. A historical read is sufficient to provide that guarantee. Obtaining a read-only tx introduces unnecessary overhead.

        Activity

        Hide
        bryanthompson bryanthompson added a comment -

        The problem is ClientIndexView#submit(key,proc). This method is used for all point operations (both read and write) on a scale-out index view. Read operations using this method include lookup() and contains() as well as the GRS atomic row read operation.

        Since the operation addresses a single key rather than a key range, it should be restricted to a single shard. However, the implementation was still obtaining a read-only tx view when the client was using read-consistent index views.

        Show
        bryanthompson bryanthompson added a comment - The problem is ClientIndexView#submit(key,proc). This method is used for all point operations (both read and write) on a scale-out index view. Read operations using this method include lookup() and contains() as well as the GRS atomic row read operation. Since the operation addresses a single key rather than a key range, it should be restricted to a single shard. However, the implementation was still obtaining a read-only tx view when the client was using read-consistent index views.
        Hide
        bryanthompson bryanthompson added a comment -

        Modified ClientIndexView to NOT obtain a read-only tx for an index procedure submitted against a key (versus a key range). This fixes a bug where GRS reads were using a full read-only transactions rather than shard-wise isolation.

        Javadoc in IDataService.

        Organized imports in DataService.

        SparseRowStore#read() now provides slightly more information when logging is enabled (the timestamp of the view).

        CommittedRevision r5884

        Show
        bryanthompson bryanthompson added a comment - Modified ClientIndexView to NOT obtain a read-only tx for an index procedure submitted against a key (versus a key range). This fixes a bug where GRS reads were using a full read-only transactions rather than shard-wise isolation. Javadoc in IDataService. Organized imports in DataService. SparseRowStore#read() now provides slightly more information when logging is enabled (the timestamp of the view). CommittedRevision r5884

          People

          • Assignee:
            bryanthompson bryanthompson
            Reporter:
            bryanthompson bryanthompson
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: