Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

[インデックス 19316] ファイルの概要

このコミットは、Goランタイムのデータ競合検出器(Race Detector)に関するドキュメントリンクの変更を元に戻すものです。具体的には、src/pkg/runtime/race/doc.goファイル内のドキュメントURLを、以前のバージョンに差し戻しています。

コミット

commit b600de755d0c6fd01d8168654e5d77d13ee5596e
Author: Brad Fitzpatrick <bradfitz@golang.org>
Date:   Fri May 9 17:31:35 2014 -0700

    undo CL 100330043 / e4248ed0037c
    
    <enter reason for undo>
    
    ««« original CL description
    runtime/race: fix the link for the race detector.
    
    LGTM=bradfitz
    R=golang-dev, bradfitz
    CC=golang-codereviews
    https://golang.org/cl/100330043
    
    »»»
    
    TBR=minux
    R=minux.ma
    CC=golang-codereviews
    https://golang.org/cl/96200044

GitHub上でのコミットページへのリンク

https://github.com/golang/go/commit/b600de755d0c6fd01d8168654e5d77d13ee5596e

元コミット内容

このコミット(インデックス19316、ハッシュb600de755d0c6fd01d8168654e5d77d13ee5596e)は、以前のコミットであるe4248ed0037c(Goの内部的なChange List ID: CL 100330043)を元に戻すものです。

元となったコミットe4248ed0037cの目的は、「runtime/race: fix the link for the race detector.」(データ競合検出器のリンクを修正する)というものでした。このコミットは、src/pkg/runtime/race/doc.goファイル内のデータ競合検出器に関するドキュメントリンクを、http://blog.golang.org/race-detectorからhttp://golang.org/doc/articles/race_detector.htmlへ変更していました。

変更の背景

このコミットは、前述のe4248ed0037cコミットによって行われた変更を「undo」(元に戻す)するものです。コミットメッセージには具体的な「undo」の理由が明記されていません(<enter reason for undo>と記載されています)が、これは通常、以前の変更が何らかの理由で不適切であったり、問題を引き起こしたり、あるいは時期尚早であったりした場合に行われます。

今回のケースでは、ドキュメントリンクの変更であったため、新しいリンクが一時的に利用できなかった、内容が不適切であった、あるいは古いブログ記事へのリンクが何らかの理由で引き続き必要とされた、といった可能性が考えられます。正確な理由はコミットメッセージからは読み取れませんが、変更が差し戻されたという事実から、元の変更が意図した通りに機能しなかったか、あるいは別の考慮事項があったと推測されます。

前提知識の解説

Go Race Detector (データ競合検出器)

Goのデータ競合検出器は、並行処理を行うGoプログラムにおいて、複数のGoroutineが共有データに同時にアクセスし、少なくとも1つのアクセスが書き込みである場合に発生する「データ競合」を検出するためのツールです。データ競合は、プログラムの予測不能な動作やバグの主要な原因となります。

Goのデータ競合検出器は、コンパイル時または実行時に有効にすることができます。最も一般的な使用方法は、go run -racego test -raceのように、goコマンドに-raceフラグを付けて実行することです。これにより、プログラムの実行中にデータ競合が検出されると、詳細なレポートが出力され、競合が発生した場所や関連するGoroutineのスタックトレースが示されます。

doc.goファイル

Goのパッケージには、パッケージ全体のドキュメントを記述するために慣習的にdoc.goというファイルが使用されます。このファイルは、パッケージの目的、使用方法、重要な概念などを説明するために使われます。go docコマンドやGoのドキュメント生成ツール(godoc)は、このdoc.goファイルの内容を読み取り、パッケージの公式ドキュメントとして表示します。

doc.goファイルは、通常のGoのソースファイルと同様にGoのコードとして扱われますが、通常はパッケージ宣言とパッケージコメントのみを含み、実行可能なコードは含まれません。このコミットで変更されたのは、runtime/raceパッケージのdoc.goファイルであり、そのパッケージのドキュメントの一部としてデータ競合検出器に関するリンクが記述されていました。

Go Change List (CL)

Goプロジェクトでは、コードの変更は「Change List (CL)」としてGerritというコードレビューシステムに提出されます。開発者は変更をCLとして作成し、レビューアがそのCLをレビューし、承認された後にGoのリポジトリにマージされます。コミットメッセージに記載されているCL 100330043CL 96200044は、Gerritシステムにおける特定の変更セットを指すIDです。

技術的詳細

このコミットの技術的な詳細は、src/pkg/runtime/race/doc.goファイル内の単一の行の変更に集約されます。

元のコミットe4248ed0037cは、データ競合検出器に関するドキュメントのリンクを、古いブログ記事のURLから新しい公式ドキュメントのURLに更新しようとしました。

  • 変更前(元コミットe4248ed0037cが変更しようとしたリンク): http://blog.golang.org/race-detector
  • 変更後(元コミットe4248ed0037cが設定しようとしたリンク): http://golang.org/doc/articles/race_detector.html

しかし、この「undo」コミットb600de755d0c6fd01d8168654e5d77d13ee5596eは、この変更を元に戻し、リンクを再び古いブログ記事のURLに戻しました。

これは、ドキュメントの整合性を保つための単純な修正、あるいは新しいリンクが何らかの理由で一時的に無効になったか、あるいは古いブログ記事が引き続き主要な情報源として参照されるべきであると判断された結果と考えられます。Goのドキュメントは進化し続けるため、リンクの変更や差し戻しは、ドキュメントの最新性や正確性を維持するための通常の運用の一部です。

コアとなるコードの変更箇所

--- a/src/pkg/runtime/race/doc.go
+++ b/src/pkg/runtime/race/doc.go
@@ -5,5 +5,5 @@
 // Package race implements data race detection logic.
 // No public interface is provided.
 // For details about the race detector see
-// http://blog.golang.org/race-detector
+// http://golang.org/doc/articles/race_detector.html
 package race

コアとなるコードの解説

上記の差分は、src/pkg/runtime/race/doc.goファイルに対する変更を示しています。

  • - http://blog.golang.org/race-detector の行は、このコミットによって削除された行を示します。これは、元々存在していた古いブログ記事へのリンクです。
  • + http://golang.org/doc/articles/race_detector.html の行は、このコミットによって追加された行を示します。これは、元コミットe4248ed0037cが導入しようとした新しい公式ドキュメントへのリンクです。

しかし、このコミットは「undo」コミットであるため、実際にはこの差分は「元コミットe4248ed0037cが何をしたか」を示しています。この「undo」コミットb600de755d0c6fd01d8168654e5d77d13ee5596eは、この差分を逆転させる操作を行っています。つまり、http://golang.org/doc/articles/race_detector.htmlを削除し、http://blog.golang.org/race-detectorを再度追加しています。

結果として、src/pkg/runtime/race/doc.goファイル内のデータ競合検出器に関するドキュメントリンクは、http://blog.golang.org/race-detectorに戻されました。

関連リンク

参考にした情報源リンク