Commits

Armin Rigo committed 372747b

Argh, forgot that count_reads can be much bigger than the limit if the
transaction is atomic.

Comments (0)

Files changed (1)

rpython/translator/stm/src_stm/et.c

 
   /* upon abort, set the reads size limit to 94% of how much was read
      so far.  This should ensure that, assuming the retry does the same
-     thing, it will commit just before it reaches the conflicting point. */
+     thing, it will commit just before it reaches the conflicting point.
+     Note that we should never *increase* the read length limit here. */
   limit = d->count_reads;
+  if (limit > d->reads_size_limit_nonatomic) {  /* can occur if atomic */
+      limit = d->reads_size_limit_nonatomic;
+  }
   if (limit > 0) {
       limit -= (limit >> 4);
       d->reads_size_limit_nonatomic = limit;
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.