プロジェクト

全般

プロフィール

Vote #76847

完了

find_referenced_issue_by_id fails with RangeError for large numbers

Admin Redmine さんが3年以上前に追加. 3年以上前に更新.

ステータス:
Closed
優先度:
通常
担当者:
-
カテゴリ:
SCM_3
対象バージョン:
開始日:
2022/05/09
期日:
進捗率:

0%

予定工数:
category_id:
3
version_id:
107
issue_org_id:
21071
author_id:
11787
assigned_to_id:
1
comments:
6
status_id:
5
tracker_id:
1
plus1:
0
affected_version:
closed_on:
affected_version_id:
ステータス-->[Closed]

説明

When a commit message contains a large number like #2010021810000121 it becomes impossible to open the repository view.

On the log we get the error:

A RangeError occurred in repositories#show:

2010021810000121 is out of range for ActiveRecord::ConnectionAdapters::SQLServer::Type::Integer with limit 4

app/models/changeset.rb:203:in `find_referenced_issue_by_id'
app/models/changeset.rb:134:in `block (2 levels) in scan_comment_for_issue_ids'
app/models/changeset.rb:133:in `each'
app/models/changeset.rb:133:in `block in scan_comment_for_issue_ids'
app/models/changeset.rb:129:in `scan'
app/models/changeset.rb:129:in `scan_comment_for_issue_ids'
app/models/changeset.rb:102:in `scan_for_issues'
app/models/repository/git.rb:218:in `save_revision'
app/models/repository/git.rb:207:in `block (2 levels) in save_revisions'
app/models/repository/git.rb:204:in `block in save_revisions'
app/models/repository/git.rb:203:in `each'
app/models/repository/git.rb:203:in `save_revisions'
app/models/repository/git.rb:153:in `fetch_changesets'
app/controllers/repositories_controller.rb:114:in `show'
lib/redmine/sudo_mode.rb:63:in `sudo_mode'

Our system is running with following versions (but it also affects the current redmine trunk):

Environment:
  Redmine version                3.1.0.devel
  Ruby version                   2.2.3-p173 (2015-08-18) [i386-linux-gnu]
  Rails version                  4.2.3
  Environment                    production
  Database adapter               SQLServer
SCM:
  Subversion                     1.8.8
  Mercurial                      2.8.2
  Cvs                            1.12.13
  Git                            1.9.1
  Filesystem     

journals

--------------------------------------------------------------------------------
It seems Rails 4.2 behavior change.
* https://github.com/rails/rails/pull/19717
* https://github.com/rails/rails/issues/21309
--------------------------------------------------------------------------------
Try this patch.
<pre><code class="diff">
diff --git a/app/models/changeset.rb b/app/models/changeset.rb
--- a/app/models/changeset.rb
+++ b/app/models/changeset.rb
@@ -200,7 +200,11 @@ class Changeset < ActiveRecord::Base
# Finds an issue that can be referenced by the commit message
def find_referenced_issue_by_id(id)
return nil if id.blank?
- issue = Issue.includes(:project).where(:id => id.to_i).first
+ issue = begin
+ Issue.includes(:project).where(:id => id.to_i).first
+ rescue RangeError
+ nil
+ end
if Setting.commit_cross_project_ref?
# all issues can be referenced/fixed
elsif issue

</code></pre>
--------------------------------------------------------------------------------
Thank you.

That fixed it.
--------------------------------------------------------------------------------
Fixed in r14758.
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

Admin Redmine さんが3年以上前に更新

  • カテゴリSCM_3 にセット
  • 対象バージョン3.0.6_107 にセット

他の形式にエクスポート: Atom PDF

いいね!0
いいね!0