<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>29729</bug_id>
          
          <creation_ts>2009-09-24 18:14:37 -0700</creation_ts>
          <short_desc>SQLiteTransaction should use BEGIN DEFERRED instead of BEGIN to begin read-only transactions</short_desc>
          <delta_ts>2009-11-11 21:43:31 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dumitru Daniliuc">dumi</reporter>
          <assigned_to name="Dumitru Daniliuc">dumi</assigned_to>
          <cc>andersca</cc>
    
    <cc>aroben</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jorlow</cc>
    
    <cc>michaeln</cc>
    
    <cc>mjs</cc>
    
    <cc>mrowe</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>149911</commentid>
    <comment_count>0</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2009-09-24 18:14:37 -0700</bug_when>
    <thetext>If a port builds its own sqlite lib and uses flags to turn BEGIN into BEGIN IMMEDIATE by default (like chromium), then scheduling multiple read-only transactions on the DB on the same DB thread will result in a deadlock. The DB thread will essentially be stuck on a task that tries to acquire a RESERVED lock on the DB file, while that lock is held by another task that waits in the queue. In order to prevent this, we should change SQLiteTransaction to explicitly issue a BEGIN DEFERRED command for read-only transactions. This change will also make sure that read-only transactions don&apos;t unnecessarily acquire a higher level lock that would delay other potential transactions on the same DB.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149918</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-09-24 19:02:44 -0700</bug_when>
    <thetext>Which flag is SQLite being built with to cause this change in behavior?  Why is Chromium building SQLite in this non-standard manner?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149927</commentid>
    <comment_count>2</comment_count>
      <attachid>40098</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2009-09-24 20:27:55 -0700</bug_when>
    <thetext>Created attachment 40098
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150140</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2009-09-25 13:58:09 -0700</bug_when>
    <thetext>Being explicit in webcore code about the type of transaction is a good thing regardless of how the underlying sqlite library is built.

typo in the ChangeLog, DIFERRED s/b DEFERRED, otherwise lgtm (fwiw)

@mark, to avoid the possibility of starting a transaction that ultimately fails for extraneous reasons, this suited Chrome&apos;s internal use of sqlite.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150146</commentid>
    <comment_count>4</comment_count>
      <attachid>40098</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-25 14:17:29 -0700</bug_when>
    <thetext>Comment on attachment 40098
patch

I think it&apos;s fine to be explicit, assuming that &quot;BEGIN&quot; normally means &quot;BEGIN DEFERRED&quot;.  You need to answer Mark&apos;s question before we can commit this though.

Also the ordering of the comments seems a bit odd. Maybe the two comments should just be unified into one to explain both cases?  The links seem useful for explaining both.

r+ but please consider the comment modifications, and make sure to answer Mark&apos;s query before any commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150147</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-09-25 14:17:52 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Being explicit in webcore code about the type of transaction is a good thing
&gt; regardless of how the underlying sqlite library is built.

As far as I can tell SQLite has no compilation option that alters the behavior of the &quot;BEGIN&quot; statement, and &quot;BEGIN&quot; is explicitly documented as being equivalent to &quot;BEGIN DEFERRED&quot;. 


&gt; @mark, to avoid the possibility of starting a transaction that ultimately fails
&gt; for extraneous reasons, this suited Chrome&apos;s internal use of sqlite.

It sounds like the fix is for Chrome to be explicit about the type of transaction it uses rather than patching SQLite.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150149</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-09-25 14:21:34 -0700</bug_when>
    <thetext>We&apos;re relying on SQLite to behave as documented.  I don&apos;t believe that WebKit should change to support patched versions of SQLite that no longer match the documented behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150152</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2009-09-25 14:28:04 -0700</bug_when>
    <thetext>@mark, well if you really want to force the chrome-team to jump thru some
hoops...

I still think being explicit about the nature of the transaction started by
webcore&apos;s SQLiteTransaction class can only be considered a good thing. What&apos;s
the downside?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150160</commentid>
    <comment_count>8</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-09-25 14:40:23 -0700</bug_when>
    <thetext>Using SQLite patched in this way is a problem because we can no longer rely on the documentation when writing new code that uses SQLite.  Changing this instance to &quot;BEGIN DEFERRED&quot; may work around the current problem, but as new code is written and *correctly* uses only &quot;BEGIN&quot; it will be subtly incorrect in your configuration.  The solution there is not to insist that we always use &quot;BEGIN DEFERRED&quot; but to not change the behavior of SQLite in the first place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150168</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2009-09-25 14:59:27 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Using SQLite patched in this way is a problem because we can no longer rely on
&gt; the documentation when writing new code that uses SQLite.  Changing this
&gt; instance to &quot;BEGIN DEFERRED&quot; may work around the current problem, but as new
&gt; code is written and *correctly* uses only &quot;BEGIN&quot; it will be subtly incorrect
&gt; in your configuration.  The solution there is not to insist that we always use
&gt; &quot;BEGIN DEFERRED&quot; but to not change the behavior of SQLite in the first place.

Maybe the chrome team should re-visit its decision to apply the publicly available patch to sqlite that has been applied. I&apos;ll mention this to brett. But that chrome change seems a bit out-of-scope for this particular code change.

BEGIN == BEGIN DEFERRED by default, so I still don&apos;t see any downside in the context of this narrowly constrained code change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150779</commentid>
    <comment_count>10</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2009-09-28 18:51:58 -0700</bug_when>
    <thetext>Mark, I talked to dglazkov about this, and he brought up a good point. Every time we execute a SQL statement, SQLite implicitly creates a transaction. So even if we wanted to change all Chromium code that uses SQLite, but doesn&apos;t do it through WebCore, it wouldn&apos;t be as easy as grepping for BEGIN and changing all occurrences to BEGIN IMMEDIATE. We&apos;d have to:

1. Find every SQL statement that we execute.
2. Figure out if it goes through WebCore or not.
3. If it doesn&apos;t, wrap each statement into a &quot;BEGIN IMMEDIATE; &quot; + sqlStatement + &quot;COMMIT;&quot; (or similar) construct.

Even if this might seem like the right solution, going through the entire Chromium code base looking for SQL statements, and then wrapping each one of them into an explicit transaction seems unreasonable to us at this point.

Another point I want to bring up is that EVERY WebKit port that changes the default behavior of SQLite&apos;s BEGIN command will suffer from this problem. Chromium might be the only port that does it at the moment, but it&apos;s not unthinkable that another port might want to do the same thing in the future. Without this patch, they&apos;ll run into unexpected, hard-to-debug deadlocks as soon as they change their default BEGIN behavior. We (Michael and I) feel that a 1-word change to WebKit that explicitly states the expected default behavior is a much smaller price to pay, even if this change seems redundant and unnecessary (although we think that explicitly (re-)stating our expectations is not redundant and has value).

Any chance we could come to an agreement here? This is not just a nice-to-have or we-like-it-more-this-way change. Without this patch Chromium will not be able to support HTML5 DBs (unless we wrap all our current SQL statements into explicit transactions, which is probably not very likely to happen ever).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150978</commentid>
    <comment_count>11</comment_count>
      <attachid>40098</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-09-29 11:41:55 -0700</bug_when>
    <thetext>Comment on attachment 40098
patch

&gt; +        Starting all read-only transactions with an explicit BEGIN
&gt; +        DIFERRED command instead of BEGIN, since some ports (chromium)

DEFERRED -- typo.

Otherwise, I think this is fine. I don&apos;t want to stir up a controversy here, but Dumi&apos;s arguments are pretty solid.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150985</commentid>
    <comment_count>12</comment_count>
      <attachid>40315</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2009-09-29 11:56:56 -0700</bug_when>
    <thetext>Created attachment 40315
patch

Fixed the typo and rearranged the comments in SQLiteTransaction a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151008</commentid>
    <comment_count>13</comment_count>
      <attachid>40315</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-09-29 12:51:35 -0700</bug_when>
    <thetext>Comment on attachment 40315
patch

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151012</commentid>
    <comment_count>14</comment_count>
      <attachid>40315</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-09-29 13:05:19 -0700</bug_when>
    <thetext>Comment on attachment 40315
patch

Clearing flags on attachment: 40315

Committed r48894: &lt;http://trac.webkit.org/changeset/48894&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151013</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-09-29 13:05:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151014</commentid>
    <comment_count>16</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-09-29 13:07:08 -0700</bug_when>
    <thetext>Why was this landed.  It doesn&apos;t seem like there was a consensus reached.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151016</commentid>
    <comment_count>17</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-09-29 13:14:08 -0700</bug_when>
    <thetext>I didn&apos;t think there was much left to discuss? Mark raised a valid point, Dumi addressed it pretty thoroughly. The patch doesn&apos;t seem very controversial -- doesn&apos;t change behavior, fixes a fairly pressing issue. Did I do the wrong thing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151020</commentid>
    <comment_count>18</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-09-29 13:23:16 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; I didn&apos;t think there was much left to discuss? Mark raised a valid point, Dumi
&gt; addressed it pretty thoroughly. The patch doesn&apos;t seem very controversial --
&gt; doesn&apos;t change behavior, fixes a fairly pressing issue. Did I do the wrong
&gt; thing?

The last substantial comment ended with &quot;Any chance we could come to an agreement here?&quot;, so yes, I think you acted prematurely here.  I also don&apos;t see how Dumi addressed Marks comment.  It seems the only issue here is that Chromium does not want to change on their end to match standard usage of SQLite.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151022</commentid>
    <comment_count>19</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-09-29 13:28:33 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #17)
&gt; &gt; I didn&apos;t think there was much left to discuss? Mark raised a valid point, Dumi
&gt; &gt; addressed it pretty thoroughly. The patch doesn&apos;t seem very controversial --
&gt; &gt; doesn&apos;t change behavior, fixes a fairly pressing issue. Did I do the wrong
&gt; &gt; thing?
&gt; 
&gt; The last substantial comment ended with &quot;Any chance we could come to an
&gt; agreement here?&quot;, so yes, I think you acted prematurely here.  I also don&apos;t see
&gt; how Dumi addressed Marks comment.  It seems the only issue here is that
&gt; Chromium does not want to change on their end to match standard usage of
&gt; SQLite.

What is the downside to Apple and/or any of the other ports?

The down side to Chromium changing how they do things is a substantial amount of changed code.  I&apos;d even go so far as to predict a performance hit and some bloat in executable size due to a lot of extra SQL code being added.

If we tried to upstream a build option to SQLite to change the semantics, would that make everyone happy?  Based on Mark&apos;s reasoning in the beginning of the thread, it sounds like it would.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151029</commentid>
    <comment_count>20</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-09-29 13:43:04 -0700</bug_when>
    <thetext>Rolled out as http://trac.webkit.org/changeset/48897.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151031</commentid>
    <comment_count>21</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-09-29 13:44:23 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #18)
&gt; &gt; (In reply to comment #17)
&gt; &gt; &gt; I didn&apos;t think there was much left to discuss? Mark raised a valid point, Dumi
&gt; &gt; &gt; addressed it pretty thoroughly. The patch doesn&apos;t seem very controversial --
&gt; &gt; &gt; doesn&apos;t change behavior, fixes a fairly pressing issue. Did I do the wrong
&gt; &gt; &gt; thing?
&gt; &gt; 
&gt; &gt; The last substantial comment ended with &quot;Any chance we could come to an
&gt; &gt; agreement here?&quot;, so yes, I think you acted prematurely here.  I also don&apos;t see
&gt; &gt; how Dumi addressed Marks comment.  It seems the only issue here is that
&gt; &gt; Chromium does not want to change on their end to match standard usage of
&gt; &gt; SQLite.
&gt; 
&gt; What is the downside to Apple and/or any of the other ports?
&gt; 

I think Marks objections are outlined well in comment #8.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151035</commentid>
    <comment_count>22</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-09-29 13:59:08 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #19)
&gt; &gt; (In reply to comment #18)
&gt; &gt; &gt; (In reply to comment #17)
&gt; &gt; &gt; &gt; I didn&apos;t think there was much left to discuss? Mark raised a valid point, Dumi
&gt; &gt; &gt; &gt; addressed it pretty thoroughly. The patch doesn&apos;t seem very controversial --
&gt; &gt; &gt; &gt; doesn&apos;t change behavior, fixes a fairly pressing issue. Did I do the wrong
&gt; &gt; &gt; &gt; thing?
&gt; &gt; &gt; 
&gt; &gt; &gt; The last substantial comment ended with &quot;Any chance we could come to an
&gt; &gt; &gt; agreement here?&quot;, so yes, I think you acted prematurely here.  I also don&apos;t see
&gt; &gt; &gt; how Dumi addressed Marks comment.  It seems the only issue here is that
&gt; &gt; &gt; Chromium does not want to change on their end to match standard usage of
&gt; &gt; &gt; SQLite.
&gt; &gt; 
&gt; &gt; What is the downside to Apple and/or any of the other ports?
&gt; &gt; 
&gt; 
&gt; I think Marks objections are outlined well in comment #8.

All of his objections only apply to the Chromium port.  We agree that they are valid concerns, but the Chromium port would rather assume the risk Mark outline in comment #8 rather than make the much bigger, riskier change he suggested.

This change will have no overhead on other WebKit ports.  We&apos;re not even asking WebKit developers to look out for this in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151039</commentid>
    <comment_count>23</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2009-09-29 14:03:38 -0700</bug_when>
    <thetext>&gt; I think Marks objections are outlined well in comment #8.

And there is an unanswered response in comment #9. In the absence of a
response, four more eyes took a look, and that inspection resulted in things
getting committed. Not sure how this molehill became a mountain, but here we
are.

So... what is the plan to surmount this newly formed mountain?

(imho... this is not a productive use of time guys)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151073</commentid>
    <comment_count>24</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-09-29 15:21:41 -0700</bug_when>
    <thetext>A few random points:

* When an objection is raised to a patch it is common courtesy to ensure that the objection is cleared up before the patch is landed.

* Changing the semantics of a standard library such as SQLite is a bad idea.  You&apos;ve already seen that it causes subtle bugs.

* Claiming that this affects &quot;EVERY WebKit port that changes the
default behavior of SQLite&apos;s BEGIN command&quot; may be literally true, but it&apos;s a ridiculous statement to make.  This affects Chrome, and only Chrome.

* Claims like &quot;this change will have no overhead on other WebKit ports&quot; are literally true, but miss the forest for this particular tree.  Chrome developers contributing to WebKit no longer see the same semantics from SQL code that every other port sees, which greatly increases the chances that they will contribute code that has subtle issues on other ports.


My suggestion is that if you&apos;re unwilling, for whatever reason, to change Chrome to use the standard SQLite semantics then you should make these semantics opt-in.  This could be accomplished by a PRAGMA statement executed immediately after a connection is opened.  This will allow WebCore to continue to remain blissfully unaware of the non-standard semantics that you wish Chromium&apos;s use of SQLite to have.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151076</commentid>
    <comment_count>25</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-09-29 15:31:01 -0700</bug_when>
    <thetext>My apologies. I had assumed -- incorrectly -- that the discussion had completed. I won&apos;t do this again. I&apos;ll let you guys hash out the specifics of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151096</commentid>
    <comment_count>26</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2009-09-29 16:31:44 -0700</bug_when>
    <thetext>&gt; * Changing the semantics of a standard library such as SQLite is a bad idea. 
&gt; You&apos;ve already seen that it causes subtle bugs.

I agree in principle.  However, in this case modifying SQLite behavior proved to be the better solution.  It was not just a convenient hack.  This is something we put together back in 2007 for Gears to address issues related to multi-process access (which Chrome obviously shares).  In addition to this, we maintain several patches to SQLite.  Some are in the process of being contributed to SQLite.  Some have already (see for instance fts3).  Others are not for various reasons.  In all cases, we take on the burden of maintaining these patches because they provide us some substantial benefit.  That is Chromium team&apos;s burden.

When it comes to the proposed change, it is only adding specificity.  It doesn&apos;t change the meaning of the code.  So, in the short term at least, I don&apos;t see the harm in it.  It fixes a Chromium bug and leaves other ports unmodified.

I propose that we proceed with this patch, and then fork off the discussion about how to avoid it to another bug.  That will entail more work, but I think it is a worthwhile endeavor.  It is reasonable for us to circle back and review the decision from 2007 that brought us here.

Here&apos;s the sqlite thread from 2007:
http://www.mail-archive.com/sqlite-users@sqlite.org/msg28271.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151106</commentid>
    <comment_count>27</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-09-29 17:03:23 -0700</bug_when>
    <thetext>While this change itself is obviously small and doesn&apos;t change behavior, I feel that the deeper issues that it raises about using custom SQLite dialects should be addressed before we start modifying WebCore.  I suspect that Bugzilla isn&apos;t the best forum for that discussion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151109</commentid>
    <comment_count>28</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-09-29 17:13:00 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; While this change itself is obviously small and doesn&apos;t change behavior, I feel
&gt; that the deeper issues that it raises about using custom SQLite dialects should
&gt; be addressed before we start modifying WebCore.  I suspect that Bugzilla isn&apos;t
&gt; the best forum for that discussion.

Sure.  We can do it on WebKit-dev then?

Either way, I think this patch should go in now.  It fixes a bug that is currently affecting Chromium and will not (itself) affect any other port in a negative way.

Darin acknowledged that there is a larger issue here that needs to be addressed, so there&apos;s no need to hold this fix hostage in order to force such a discussion to take place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151111</commentid>
    <comment_count>29</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-09-29 17:16:45 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (In reply to comment #27)
&gt; &gt; While this change itself is obviously small and doesn&apos;t change behavior, I feel
&gt; &gt; that the deeper issues that it raises about using custom SQLite dialects should
&gt; &gt; be addressed before we start modifying WebCore.  I suspect that Bugzilla isn&apos;t
&gt; &gt; the best forum for that discussion.
&gt; 
&gt; Sure.  We can do it on WebKit-dev then?

Sure.

&gt; Either way, I think this patch should go in now.  It fixes a bug that is
&gt; currently affecting Chromium and will not (itself) affect any other port in a
&gt; negative way.
&gt; 
&gt; Darin acknowledged that there is a larger issue here that needs to be
&gt; addressed, so there&apos;s no need to hold this fix hostage in order to force such a
&gt; discussion to take place.

The comment to which you&apos;re replying was quite clear on my feelings about this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151112</commentid>
    <comment_count>30</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-09-29 17:22:14 -0700</bug_when>
    <thetext>I&apos;d like to add that I understand you&apos;re keen to see this problem fixed, but given the code has being using &quot;BEGIN&quot; for at least two years now I don&apos;t see why this is suddenly so urgent that we can&apos;t have a reasonable discussion to decide the appropriate course of action.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151120</commentid>
    <comment_count>31</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-09-29 17:41:19 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Mark, I talked to dglazkov about this, and he brought up a good point. Every
&gt; time we execute a SQL statement, SQLite implicitly creates a transaction. So
&gt; even if we wanted to change all Chromium code that uses SQLite, but doesn&apos;t do
&gt; it through WebCore, it wouldn&apos;t be as easy as grepping for BEGIN and changing
&gt; all occurrences to BEGIN IMMEDIATE. We&apos;d have to:
&gt; 
&gt; 1. Find every SQL statement that we execute.
&gt; 2. Figure out if it goes through WebCore or not.
&gt; 3. If it doesn&apos;t, wrap each statement into a &quot;BEGIN IMMEDIATE; &quot; + sqlStatement
&gt; + &quot;COMMIT;&quot; (or similar) construct.
&gt; 
&gt; Even if this might seem like the right solution, going through the entire
&gt; Chromium code base looking for SQL statements, and then wrapping each one of
&gt; them into an explicit transaction seems unreasonable to us at this point.

If your change to SQLite affects every single SQL statement in Chromium, not just BEGINs, then isn&apos;t there a risk it affects every single SQL statement in WebKit, not just BEGINs? Or is there a reason that&apos;s not the case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151124</commentid>
    <comment_count>32</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-09-29 17:51:46 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; I&apos;d like to add that I understand you&apos;re keen to see this problem fixed, but
&gt; given the code has being using &quot;BEGIN&quot; for at least two years now I don&apos;t see
&gt; why this is suddenly so urgent that we can&apos;t have a reasonable discussion to
&gt; decide the appropriate course of action.

Unless there is a reason this change is particularly time-sensitive, it&apos;s probably good to have the discussion first.

I wouldn&apos;t categorically rule out accepting the change, but to me it seems strange and worrisome for Chromium to modify SQLite&apos;s behavior and then modify WebKit to work around it. It seems like there will be a risk of this approach creating future bugs, because somebody didn&apos;t test on the other SQLite variant. So let&apos;s see if we can figure out a more sustainable solution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151129</commentid>
    <comment_count>33</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-09-29 18:02:15 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; &gt; I think Marks objections are outlined well in comment #8.
&gt; 
&gt; And there is an unanswered response in comment #9. In the absence of a
&gt; response, four more eyes took a look, and that inspection resulted in things
&gt; getting committed. Not sure how this molehill became a mountain, but here we
&gt; are.
&gt; 
&gt; So... what is the plan to surmount this newly formed mountain?
&gt; 
&gt; (imho... this is not a productive use of time guys)

I agree this issue is the biggest in the world. We could live with this patch if there is truly no alternative, even though it creates a long-term testing risk. However, I don&apos;t think it&apos;s good to be so dismissive of Mark&apos;s concerns. He sees this small code change as potentially indicative of larger issues. That&apos;s worth thinking about, at least.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151135</commentid>
    <comment_count>34</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2009-09-29 18:29:29 -0700</bug_when>
    <thetext>&gt; I agree this issue is the biggest in the world. We could live with this patch
&gt; if there is truly no alternative, even though it creates a long-term testing
&gt; risk. However, I don&apos;t think it&apos;s good to be so dismissive of Mark&apos;s concerns.
&gt; He sees this small code change as potentially indicative of larger issues.
&gt; That&apos;s worth thinking about, at least.

Thnx for the courtesy of an actual reply to something i typed in here.

I certainly didn&apos;t mean to be dismissive of Mark&apos;s concerns. I replied and waited, dumi followed up, we waited some more. After no response, I escalated to some chrome webkit reviewers/committers, we exchanged thoughts on what to do and life went on... and then all hell broken loose.

It&apos;s been mentioned a couple of times in the course of this code review that the chrome team should probably revisit its decision to apply that SQLite patch. I buy that, several others of us do to. Any changes we make there has some ripple, all of our usages of SQLite will be affected. We could probably make the change w/o any incidence, but there is a chance of an unintended interaction somewhere. So we&apos;re not looking to make that change hastily. We will do so only with appropriate deliberation.

It&apos;s also been observed that the addition of the DEFERRED keyword in webcore code should be considered a small improvement to the webcore code base irrespective of default behavior of SQLite. Adding clarity and specificity is generally good thing. Several comments have added weight to that observation. And obviously it doesn&apos;t alter the behavior of webcore at all.

When i hold the two options up and look at what todo for the here and now, the answer is pretty obvious to me... a choice between a safe cosmetic change vs something that may actually carry risk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151137</commentid>
    <comment_count>35</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2009-09-29 18:33:23 -0700</bug_when>
    <thetext>Maciej, I don&apos;t think there&apos;s any testing risk here. With this patch, we do not want WebCore to do anything special for us. On the contrary, we want it to do exactly the same thing that it does for all other ports. And since our SQLite build uses different defaults, we just want to replace a SQLite standard command that depends on default values with another SQLite standard command that doesn&apos;t. That&apos;s all.

&gt; If your change to SQLite affects every single SQL statement in Chromium, not
&gt; just BEGINs, then isn&apos;t there a risk it affects every single SQL statement in
&gt; WebKit, not just BEGINs? Or is there a reason that&apos;s not the case?

As far as I know, Chromium doesn&apos;t use any WebKit code that interacts with SQLite (other than the databases/storage code, but this is exactly the code that we&apos;re trying to fix in this patch).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151146</commentid>
    <comment_count>36</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-09-29 18:49:04 -0700</bug_when>
    <thetext>(In reply to comment #35)
&gt; Maciej, I don&apos;t think there&apos;s any testing risk here. With this patch, we do not
&gt; want WebCore to do anything special for us. On the contrary, we want it to do
&gt; exactly the same thing that it does for all other ports. And since our SQLite
&gt; build uses different defaults, we just want to replace a SQLite standard
&gt; command that depends on default values with another SQLite standard command
&gt; that doesn&apos;t. That&apos;s all.
&gt; 
&gt; &gt; If your change to SQLite affects every single SQL statement in Chromium, not
&gt; &gt; just BEGINs, then isn&apos;t there a risk it affects every single SQL statement in
&gt; &gt; WebKit, not just BEGINs? Or is there a reason that&apos;s not the case?
&gt; 
&gt; As far as I know, Chromium doesn&apos;t use any WebKit code that interacts with
&gt; SQLite (other than the databases/storage code, but this is exactly the code
&gt; that we&apos;re trying to fix in this patch).


That doesn&apos;t really answer my question - if non-BEGIN statements in Chromium&apos;s code could be affected by a change to SQLite BEGIN behavior, why aren&apos;t non-BEGIN statements in WebKit code affected? Is the change asymmetric somehow? This patch only changes a BEGIN and not other statements. This isn&apos;t necessarily a showstopper, I&apos;d just like to understand the issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151151</commentid>
    <comment_count>37</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2009-09-29 19:03:02 -0700</bug_when>
    <thetext>&gt; That doesn&apos;t really answer my question - if non-BEGIN statements in Chromium&apos;s
&gt; code could be affected by a change to SQLite BEGIN behavior, why aren&apos;t
&gt; non-BEGIN statements in WebKit code affected? Is the change asymmetric somehow?
&gt; This patch only changes a BEGIN and not other statements. This isn&apos;t
&gt; necessarily a showstopper, I&apos;d just like to understand the issue.

Thats a good question. I&apos;m not sure if our patch has any affect on the implicit transactions started around &apos;naked&apos; statements. Our patch is to the parser, so there&apos;s a good chance that it doesn&apos;t affect non-BEGIN statements, but I don&apos;t know that for a fact. Scott probably know the answer to that question.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151154</commentid>
    <comment_count>38</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-09-29 19:22:46 -0700</bug_when>
    <thetext>As we spoke over IRC, I think the following plan materialized:

* dumi &amp; shess to meet tomorrow and figure out the impact of rolling out BEGIN IMMEDIATE patch
* if the roll out is not possible, figure out the effort involved in adding a PRAGMA option (or even direct SQLite API) to change transaction mode run-time.
* If the effort is more than knee-high, we&apos;ll regroup and work w/Maciej &amp; Mark until we have a consensus on how to proceed. This effort may involve alcohol.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151156</commentid>
    <comment_count>39</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-09-29 19:28:58 -0700</bug_when>
    <thetext>(In reply to comment #38)
&gt; * If the effort is more than knee-high, we&apos;ll regroup and work w/Maciej &amp; Mark
&gt; until we have a consensus on how to proceed. This effort may involve alcohol.

Wait, no alcohol until step 3? :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151162</commentid>
    <comment_count>40</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2009-09-29 21:27:14 -0700</bug_when>
    <thetext>Oh well, so much for avoiding the hoop jumping.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151300</commentid>
    <comment_count>41</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2009-09-30 11:25:07 -0700</bug_when>
    <thetext>&gt; Thats a good question. I&apos;m not sure if our patch has any affect on the implicit
&gt; transactions started around &apos;naked&apos; statements. Our patch is to the parser, so
&gt; there&apos;s a good chance that it doesn&apos;t affect non-BEGIN statements, but I don&apos;t
&gt; know that for a fact. Scott probably know the answer to that question.

To complete the jump thru this particular hoop...

&gt;&gt; scott said
&gt;&gt; Re Michael&apos;s #37, I believe all implicit statements use the
&gt;&gt; appropriate transaction type from the get-go
&gt;
&gt; i said
&gt; Clarification please... by &apos;appropiate trans type&apos; do you mean...
&gt; a. IMMEDIATE since we&apos;ve whacked the parser in that way
&gt; b. appropriate for the statement type, independent of our parser whackings
&gt; I think you mean the latter.

scott said

I mean many different things, and all of them mean that it doesn&apos;t
matter.  Possibilities:

a. the BEGIN default is changed in the parser, so implicit statements
don&apos;t change their behavior at all.
b. the compiler knows enough to compile the statement to BEGIN
IMMEDIATE if it&apos;s an update, or BEGIN DEFERRED if not, again our
change wouldn&apos;t affect this.
c. regardless, if an implicit statement returns SQLITE_BUSY the
appropriate response is to execute it again.  This is correct and
works right regardless of whether it starts with an IMMEDIATE
transaction or upgrades it midway through.

Basically, I think implicit transactions are a red herring in this discussion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162792</commentid>
    <comment_count>42</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2009-11-11 21:43:31 -0800</bug_when>
    <thetext>We reverted our SQLite patch to make BEGIN default to BEGIN DEFERRED, thus making this patch unnecessary.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40098</attachid>
            <date>2009-09-24 20:27:55 -0700</date>
            <delta_ts>2009-09-29 11:56:56 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>2053</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODc0NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMDktMDktMjQgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBTdGFydGluZyBhbGwgcmVhZC1vbmx5IHRyYW5zYWN0aW9ucyB3aXRoIGFuIGV4cGxpY2l0IEJF
R0lOCisgICAgICAgIERJRkVSUkVEIGNvbW1hbmQgaW5zdGVhZCBvZiBCRUdJTiwgc2luY2Ugc29t
ZSBwb3J0cyAoY2hyb21pdW0pCisgICAgICAgIG1pZ2h0IGNvbXBpbGUgdGhlaXIgb3duIFNRTGl0
ZSBsaWJyYXJ5IGFuZCBzZXQgQkVHSU4gdG8gQkVHSU4KKyAgICAgICAgSU1NRURJQVRFIGJ5IGRl
ZmF1bHQ7IHdoaWNoIHdvdWxkIHJlc3VsdCBpbiBhIGRlYWRsb2NrIGluIGNhc2Ugb2YKKyAgICAg
ICAgdHdvIGNvbmN1cnJlbnQgcmVhZC1vbmx5IHRyYW5zYWN0aW9ucyBvbiB0aGUgc2FtZSBEQiwg
YW5kIHdvdWxkCisgICAgICAgIHVubmVjZXNzYXJpbHkgZGVsYXkgb3RoZXIgcG90ZW50aWFsIHRy
YW5zYWN0aW9ucyB0byB0aGUgc2FtZSBEQi4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjk3MjkKKworICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxp
dGVUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVUcmFuc2FjdGlvbjo6
YmVnaW4pOgorCiAyMDA5LTA5LTI0ICBKb2huIEdyZWdnICA8am9obm55Z0Bnb29nbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcAkocmV2aXNpb24gNDg3NDApCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0
LDggKzU0LDE0IEBAIHZvaWQgU1FMaXRlVHJhbnNhY3Rpb246OmJlZ2luKCkKICAgICAgICAgLy8g
YW55IHN0YXRlbWVudHMuIElmIHRoYXQgaGFwcGVucywgdGhpcyB0cmFuc2FjdGlvbiB3aWxsIGZh
aWwuCiAgICAgICAgIC8vIGh0dHA6Ly93d3cuc3FsaXRlLm9yZy9sYW5nX3RyYW5zYWN0aW9uLmh0
bWwKICAgICAgICAgLy8gaHR0cDovL3d3dy5zcWxpdGUub3JnL2xvY2tpbmd2My5odG1sI2xvY2tp
bmcKKyAgICAgICAgLy8KKyAgICAgICAgLy8gQ2FsbCBCRUdJTiBERUZFUlJFRCBleHBsaWNpdGx5
IGZvciBhIHJlYWQtb25seSB0cmFuc2FjdGlvbi4KKyAgICAgICAgLy8gT3RoZXJ3aXNlLCBhIHBv
cnQgbWlnaHQgdXNlIGEgU1FMaXRlIGxpYnJhcnkgdGhhdCB3YXMgYnVpbHQKKyAgICAgICAgLy8g
dG8gaW50ZXJwcmV0IEJFR0lOIGFzIEJFR0lOIElNTUVESUFURSwgd2hpY2ggd291bGQgbGVhZCB0
bworICAgICAgICAvLyBhIGRlYWRsb2NrIHdoZW5ldmVyIHR3byByZWFkIHRyYW5zYWN0aW9ucyBv
biB0aGUgc2FtZSBEQgorICAgICAgICAvLyBhcmUgc2NoZWR1bGVkIGNvbmN1cnJlbnRseS4KICAg
ICAgICAgaWYgKG1fcmVhZE9ubHkpCi0gICAgICAgICAgICBtX2luUHJvZ3Jlc3MgPSBtX2RiLmV4
ZWN1dGVDb21tYW5kKCJCRUdJTjsiKTsKKyAgICAgICAgICAgIG1faW5Qcm9ncmVzcyA9IG1fZGIu
ZXhlY3V0ZUNvbW1hbmQoIkJFR0lOIERFRkVSUkVEOyIpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBtX2luUHJvZ3Jlc3MgPSBtX2RiLmV4ZWN1dGVDb21tYW5kKCJCRUdJTiBJTU1FRElBVEU7
Iik7CiAgICAgICAgIG1fZGIubV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MgPSBtX2luUHJvZ3Jlc3M7
Cg==
</data>
<flag name="review"
          id="21281"
          type_id="1"
          status="-"
          setter="mrowe"
    />
    <flag name="commit-queue"
          id="21327"
          type_id="3"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40315</attachid>
            <date>2009-09-29 11:56:56 -0700</date>
            <delta_ts>2009-09-29 13:05:19 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>2800</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODc0NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMDktMDktMjkgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBTdGFydGluZyBhbGwgcmVhZC1vbmx5IHRyYW5zYWN0aW9ucyB3aXRoIGFuIGV4cGxpY2l0IEJF
R0lOCisgICAgICAgIERFRkVSUkVEIGNvbW1hbmQgaW5zdGVhZCBvZiBCRUdJTiwgc2luY2Ugc29t
ZSBwb3J0cyAoY2hyb21pdW0pCisgICAgICAgIG1pZ2h0IGNvbXBpbGUgdGhlaXIgb3duIFNRTGl0
ZSBsaWJyYXJ5IGFuZCBzZXQgQkVHSU4gdG8gQkVHSU4KKyAgICAgICAgSU1NRURJQVRFIGJ5IGRl
ZmF1bHQ7IHdoaWNoIHdvdWxkIHJlc3VsdCBpbiBhIGRlYWRsb2NrIGluIGNhc2Ugb2YKKyAgICAg
ICAgdHdvIGNvbmN1cnJlbnQgcmVhZC1vbmx5IHRyYW5zYWN0aW9ucyBvbiB0aGUgc2FtZSBEQiwg
YW5kIHdvdWxkCisgICAgICAgIHVubmVjZXNzYXJpbHkgZGVsYXkgb3RoZXIgcG90ZW50aWFsIHRy
YW5zYWN0aW9ucyB0byB0aGUgc2FtZSBEQi4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjk3MjkKKworICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxp
dGVUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVUcmFuc2FjdGlvbjo6
YmVnaW4pOgorCiAyMDA5LTA5LTI0ICBKb2huIEdyZWdnICA8am9obm55Z0Bnb29nbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcAkocmV2aXNpb24gNDg3NDApCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3
LDE1ICs0NywyMSBAQCB2b2lkIFNRTGl0ZVRyYW5zYWN0aW9uOjpiZWdpbigpCiB7CiAgICAgaWYg
KCFtX2luUHJvZ3Jlc3MpIHsKICAgICAgICAgQVNTRVJUKCFtX2RiLm1fdHJhbnNhY3Rpb25JblBy
b2dyZXNzKTsKLSAgICAgICAgLy8gQ2FsbCBCRUdJTiBJTU1FRElBVEUgZm9yIGEgd3JpdGUgdHJh
bnNhY3Rpb24gdG8gYWNxdWlyZQotICAgICAgICAvLyBhIFJFU0VSVkVEIGxvY2sgb24gdGhlIERC
IGZpbGUuIE90aGVyd2lzZSwgYW5vdGhlciB3cml0ZQotICAgICAgICAvLyB0cmFuc2FjdGlvbiAo
b24gYW5vdGhlciBjb25uZWN0aW9uKSBjb3VsZCBtYWtlIGNoYW5nZXMKLSAgICAgICAgLy8gdG8g
dGhlIHNhbWUgREIgZmlsZSBiZWZvcmUgdGhpcyB0cmFuc2FjdGlvbiBnZXRzIHRvIGV4ZWN1dGUK
LSAgICAgICAgLy8gYW55IHN0YXRlbWVudHMuIElmIHRoYXQgaGFwcGVucywgdGhpcyB0cmFuc2Fj
dGlvbiB3aWxsIGZhaWwuCisgICAgICAgIC8vIEZvciByZWFkLW9ubHkgdHJhbnNhY3Rpb25zLCBj
YWxsIEJFR0lOIERFRkVSUkVEIGV4cGxpY2l0bHkuCisgICAgICAgIC8vIE90aGVyd2lzZSwgYSBw
b3J0IG1pZ2h0IHVzZSBhIFNRTGl0ZSBsaWJyYXJ5IHRoYXQgd2FzIGJ1aWxkCisgICAgICAgIC8v
IHRvIGludGVycHJldCBCRUdJTiBhcyBCRUdJTiBJTU1FRElBVEUsIHdoaWNoIHdvdWxkIGxlYWQg
dG8KKyAgICAgICAgLy8gYSBkZWFkbG9jayB3aGVuZXZlciB0d28gcmVhZCB0cmFuc2FjdGlvbnMg
b24gdGhlIHNhbWUgREIKKyAgICAgICAgLy8gYXJlIHNjaGVkdWxlZCBjb25jdXJyZW50bHkuCisg
ICAgICAgIC8vIEZvciB3cml0ZSB0cmFuc2FjdGlvbnMsIGNhbGwgQkVHSU4gSU1NRURJQVRFIHRv
IGFjcXVpcmUKKyAgICAgICAgLy8gYSBSRVNFUlZFRCBsb2NrIG9uIHRoZSBEQiBmaWxlIGJlZm9y
ZSB0aGUgdHJhbnNhY3Rpb24KKyAgICAgICAgLy8gY2FsbGJhY2sgaXMgZXhlY3V0ZWQuIE90aGVy
d2lzZSwgYW5vdGhlciB3cml0ZSB0cmFuc2FjdGlvbgorICAgICAgICAvLyAob24gYW5vdGhlciBj
b25uZWN0aW9uKSBjb3VsZCBtYWtlIGNoYW5nZXMgdG8gdGhlIHNhbWUgREIgZmlsZQorICAgICAg
ICAvLyBiZWZvcmUgdGhpcyB0cmFuc2FjdGlvbiBnZXRzIHRvIGV4ZWN1dGUgYW55IHN0YXRlbWVu
dHMuCisgICAgICAgIC8vIElmIHRoYXQgaGFwcGVucywgdGhpcyB0cmFuc2FjdGlvbiB3aWxsIGZh
aWwuCiAgICAgICAgIC8vIGh0dHA6Ly93d3cuc3FsaXRlLm9yZy9sYW5nX3RyYW5zYWN0aW9uLmh0
bWwKICAgICAgICAgLy8gaHR0cDovL3d3dy5zcWxpdGUub3JnL2xvY2tpbmd2My5odG1sI2xvY2tp
bmcKICAgICAgICAgaWYgKG1fcmVhZE9ubHkpCi0gICAgICAgICAgICBtX2luUHJvZ3Jlc3MgPSBt
X2RiLmV4ZWN1dGVDb21tYW5kKCJCRUdJTjsiKTsKKyAgICAgICAgICAgIG1faW5Qcm9ncmVzcyA9
IG1fZGIuZXhlY3V0ZUNvbW1hbmQoIkJFR0lOIERFRkVSUkVEOyIpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBtX2luUHJvZ3Jlc3MgPSBtX2RiLmV4ZWN1dGVDb21tYW5kKCJCRUdJTiBJTU1F
RElBVEU7Iik7CiAgICAgICAgIG1fZGIubV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MgPSBtX2luUHJv
Z3Jlc3M7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>