Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
go
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
go
Commits
d46438c3
Commit
d46438c3
authored
Mar 12, 2012
by
Brad Fitzpatrick
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
cmd/godoc: remove sync code
Fixes #3273 R=gri CC=golang-dev
https://golang.org/cl/5795065
parent
bb6e685b
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
2 additions
and
110 deletions
+2
-110
src/cmd/godoc/doc.go
src/cmd/godoc/doc.go
+1
-15
src/cmd/godoc/godoc.go
src/cmd/godoc/godoc.go
+1
-1
src/cmd/godoc/main.go
src/cmd/godoc/main.go
+0
-94
No files found.
src/cmd/godoc/doc.go
View file @
d46438c3
...
...
@@ -77,12 +77,6 @@ The flags are:
HTTP service address (e.g., '127.0.0.1:6060' or just ':6060')
-server=addr
webserver address for command line searches
-sync="command"
if this and -sync_minutes are set, run the argument as a
command every sync_minutes; it is intended to update the
repository holding the source files.
-sync_minutes=0
sync interval in minutes; sync is disabled if <= 0
-templates=""
directory containing alternate template files; if set,
the directory may provide alternative template files
...
...
@@ -110,15 +104,7 @@ as follows:
/public/x -> public/x
When godoc runs as a web server and -index is set, a search index is maintained.
The index is created at startup and is automatically updated every time the
-sync command terminates with exit status 0, indicating that files have changed.
If the sync exit status is 1, godoc assumes that it succeeded without errors
but that no files changed; the index is not updated in this case.
In all other cases, sync is assumed to have failed and godoc backs off running
sync exponentially (up to 1 day). As soon as sync succeeds again (exit status 0
or 1), the normal sync rhythm is re-established.
The index is created at startup.
The index contains both identifier and full text search information (searchable
via regular expressions). The maximum number of full text search results shown
...
...
src/cmd/godoc/godoc.go
View file @
d46438c3
...
...
@@ -72,7 +72,7 @@ var (
indexThrottle
=
flag
.
Float64
(
"index_throttle"
,
0.75
,
"index throttle value; 0.0 = no time allocated, 1.0 = full throttle"
)
// file system information
fsTree
RWValue
// *Directory tree of packages, updated with each sync
fsTree
RWValue
// *Directory tree of packages, updated with each sync
(but sync code is removed now)
fsModified
RWValue
// timestamp of last call to invalidateIndex
docMetadata
RWValue
// mapping from paths to *Metadata
...
...
src/cmd/godoc/main.go
View file @
d46438c3
...
...
@@ -45,7 +45,6 @@ import (
"regexp"
"runtime"
"strings"
"time"
)
const
defaultAddr
=
":6060"
// default webserver address
...
...
@@ -58,11 +57,6 @@ var (
// file-based index
writeIndex
=
flag
.
Bool
(
"write_index"
,
false
,
"write index to a file; the file name must be specified with -index_files"
)
// periodic sync
syncCmd
=
flag
.
String
(
"sync"
,
""
,
"sync command; disabled if empty"
)
syncMin
=
flag
.
Int
(
"sync_minutes"
,
0
,
"sync interval in minutes; disabled if <= 0"
)
syncDelay
delayTime
// actual sync interval in minutes; usually syncDelay == syncMin, but syncDelay may back off exponentially
// network
httpAddr
=
flag
.
String
(
"http"
,
""
,
"HTTP service address (e.g., '"
+
defaultAddr
+
"')"
)
serverAddr
=
flag
.
String
(
"server"
,
""
,
"webserver address for command line searches"
)
...
...
@@ -82,75 +76,6 @@ func serveError(w http.ResponseWriter, r *http.Request, relpath string, err erro
servePage
(
w
,
"File "
+
relpath
,
""
,
""
,
contents
)
}
func
exec
(
rw
http
.
ResponseWriter
,
args
[]
string
)
(
status
int
)
{
r
,
w
,
err
:=
os
.
Pipe
()
if
err
!=
nil
{
log
.
Printf
(
"os.Pipe(): %v"
,
err
)
return
2
}
bin
:=
args
[
0
]
fds
:=
[]
*
os
.
File
{
nil
,
w
,
w
}
if
*
verbose
{
log
.
Printf
(
"executing %v"
,
args
)
}
p
,
err
:=
os
.
StartProcess
(
bin
,
args
,
&
os
.
ProcAttr
{
Files
:
fds
,
Dir
:
*
goroot
})
defer
r
.
Close
()
w
.
Close
()
if
err
!=
nil
{
log
.
Printf
(
"os.StartProcess(%q): %v"
,
bin
,
err
)
return
2
}
var
buf
bytes
.
Buffer
io
.
Copy
(
&
buf
,
r
)
wait
,
err
:=
p
.
Wait
()
if
err
!=
nil
{
os
.
Stderr
.
Write
(
buf
.
Bytes
())
log
.
Printf
(
"os.Wait(%d, 0): %v"
,
p
.
Pid
,
err
)
return
2
}
if
!
wait
.
Success
()
{
os
.
Stderr
.
Write
(
buf
.
Bytes
())
log
.
Printf
(
"executing %v failed"
,
args
)
status
=
1
// See comment in default case in dosync.
return
}
if
*
verbose
{
os
.
Stderr
.
Write
(
buf
.
Bytes
())
}
if
rw
!=
nil
{
rw
.
Header
()
.
Set
(
"Content-Type"
,
"text/plain; charset=utf-8"
)
rw
.
Write
(
buf
.
Bytes
())
}
return
}
func
dosync
(
w
http
.
ResponseWriter
,
r
*
http
.
Request
)
{
args
:=
[]
string
{
"/bin/sh"
,
"-c"
,
*
syncCmd
}
switch
exec
(
w
,
args
)
{
case
0
:
// sync succeeded and some files have changed;
// update package tree.
// TODO(gri): The directory tree may be temporarily out-of-sync.
// Consider keeping separate time stamps so the web-
// page can indicate this discrepancy.
initFSTree
()
fallthrough
case
1
:
// sync failed because no files changed;
// don't change the package tree
syncDelay
.
set
(
time
.
Duration
(
*
syncMin
)
*
time
.
Minute
)
// revert to regular sync schedule
default
:
// TODO(r): this cannot happen now, since Wait has a boolean exit condition,
// not an integer.
// sync failed because of an error - back off exponentially, but try at least once a day
syncDelay
.
backoff
(
24
*
time
.
Hour
)
}
}
func
usage
()
{
fmt
.
Fprintf
(
os
.
Stderr
,
"usage: godoc package [name ...]
\n
"
+
...
...
@@ -348,30 +273,11 @@ func main() {
}
registerPublicHandlers
(
http
.
DefaultServeMux
)
if
*
syncCmd
!=
""
{
http
.
Handle
(
"/debug/sync"
,
http
.
HandlerFunc
(
dosync
))
}
// Initialize default directory tree with corresponding timestamp.
// (Do it in a goroutine so that launch is quick.)
go
initFSTree
()
// Start sync goroutine, if enabled.
if
*
syncCmd
!=
""
&&
*
syncMin
>
0
{
syncDelay
.
set
(
*
syncMin
)
// initial sync delay
go
func
()
{
for
{
dosync
(
nil
,
nil
)
delay
,
_
:=
syncDelay
.
get
()
dt
:=
delay
.
(
time
.
Duration
)
if
*
verbose
{
log
.
Printf
(
"next sync in %s"
,
dt
)
}
time
.
Sleep
(
dt
)
}
}()
}
// Immediately update metadata.
updateMetadata
()
// Periodically refresh metadata.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment