mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2024-11-23 02:11:01 +00:00
fixed issue w/ buffer blocking on write to websocket
This commit is contained in:
parent
fa0213ab8d
commit
6375eaa552
7 changed files with 22 additions and 22 deletions
|
@ -245,7 +245,13 @@ app.controller("CommitController", function($scope, $http, $routeParams, stdout,
|
||||||
$scope.commit = data;
|
$scope.commit = data;
|
||||||
|
|
||||||
if (data.status!='Started' && data.status!='Pending') {
|
if (data.status!='Started' && data.status!='Pending') {
|
||||||
return;
|
$http({method: 'GET', url: '/v1/repos/'+remote+'/'+owner+"/"+name+"/branches/"+branch+"/commits/"+commit+"/console"}).
|
||||||
|
success(function(data, status, headers, config) {
|
||||||
|
$scope.console = data;
|
||||||
|
}).
|
||||||
|
error(function(data, status, headers, config) {
|
||||||
|
console.log(data);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
stdout.subscribe(data.id, function(out){
|
stdout.subscribe(data.id, function(out){
|
||||||
|
@ -256,13 +262,6 @@ app.controller("CommitController", function($scope, $http, $routeParams, stdout,
|
||||||
console.log(data);
|
console.log(data);
|
||||||
});
|
});
|
||||||
|
|
||||||
// load the repo build stdout
|
|
||||||
$http({method: 'GET', url: '/v1/repos/'+remote+'/'+owner+"/"+name+"/branches/"+branch+"/commits/"+commit+"/console"}).
|
|
||||||
success(function(data, status, headers, config) {
|
|
||||||
$scope.console = data;
|
|
||||||
}).
|
|
||||||
error(function(data, status, headers, config) {
|
|
||||||
console.log(data);
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
});
|
|
@ -16,6 +16,9 @@ angular.module('app').service('stdout', ['$window', function($window) {
|
||||||
callback(event.data);
|
callback(event.data);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
websocket.onclose = function(event) {
|
||||||
|
console.log('websocket closed at '+path);
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
this.unsubscribe = function() {
|
this.unsubscribe = function() {
|
||||||
|
|
|
@ -6,8 +6,8 @@
|
||||||
</dl>
|
</dl>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<dl>
|
<dl ng-if="commit.duration != 0">
|
||||||
<dd><h1>3.5 ms</h1></dd>
|
<dd><h1>{{ commit.duration | toDuration}}</h1></dd>
|
||||||
</dl>
|
</dl>
|
||||||
|
|
||||||
<dl>
|
<dl>
|
||||||
|
@ -19,7 +19,7 @@
|
||||||
</aside>
|
</aside>
|
||||||
|
|
||||||
<div id="main" class="output">
|
<div id="main" class="output">
|
||||||
<div id="main" class="output" data-result="Failure">
|
<div id="main" class="output" data-result="{{ commit.status }}">
|
||||||
<nav>
|
<nav>
|
||||||
<a href="/"><span class="fa fa-th"></span></a>
|
<a href="/"><span class="fa fa-th"></span></a>
|
||||||
<span>{{ repo.owner }}</span>
|
<span>{{ repo.owner }}</span>
|
||||||
|
|
|
@ -87,10 +87,6 @@ func main() {
|
||||||
// cancel all previously running builds
|
// cancel all previously running builds
|
||||||
go commits.CancelAll()
|
go commits.CancelAll()
|
||||||
|
|
||||||
// setup the build queue
|
|
||||||
//queueRunner := queue.NewBuildRunner(docker.New(), timeout)
|
|
||||||
//queue := queue.Start(work ers, commits, queueRunner)
|
|
||||||
|
|
||||||
queue := make(chan *worker.Request)
|
queue := make(chan *worker.Request)
|
||||||
workers := make(chan chan *worker.Request)
|
workers := make(chan chan *worker.Request)
|
||||||
worker.NewDispatch(queue, workers).Start()
|
worker.NewDispatch(queue, workers).Start()
|
||||||
|
|
|
@ -22,7 +22,9 @@ func (b *Buffer) Write(p []byte) (n int, err error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *Buffer) WriteString(s string) (n int, err error) {
|
func (b *Buffer) WriteString(s string) (n int, err error) {
|
||||||
return b.Write([]byte(s))
|
n, err = b.buf.WriteString(s)
|
||||||
|
b.channel.Publish([]byte(s))
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *Buffer) Bytes() []byte {
|
func (b *Buffer) Bytes() []byte {
|
||||||
|
|
|
@ -29,8 +29,7 @@ func NewChannel(opts *Opts) *Channel {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Channel) Publish(data interface{}) {
|
func (c *Channel) Publish(data interface{}) {
|
||||||
c.broadcast <- data
|
go func() { c.broadcast <- data }()
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Channel) Subscribe() *Subscription {
|
func (c *Channel) Subscribe() *Subscription {
|
||||||
|
|
|
@ -81,7 +81,7 @@ func (w *worker) Stop() {
|
||||||
func (w *worker) Execute(r *Request) {
|
func (w *worker) Execute(r *Request) {
|
||||||
// mark the build as Started and update the database
|
// mark the build as Started and update the database
|
||||||
r.Commit.Status = model.StatusStarted
|
r.Commit.Status = model.StatusStarted
|
||||||
r.Commit.Started = time.Now().Unix()
|
r.Commit.Started = time.Now().UTC().Unix()
|
||||||
w.commits.Update(r.Commit)
|
w.commits.Update(r.Commit)
|
||||||
|
|
||||||
// notify all listeners that the build is started
|
// notify all listeners that the build is started
|
||||||
|
@ -129,7 +129,7 @@ func (w *worker) Execute(r *Request) {
|
||||||
builder.Repo = repo
|
builder.Repo = repo
|
||||||
builder.Stdout = buf
|
builder.Stdout = buf
|
||||||
builder.Key = []byte(r.Repo.PrivateKey)
|
builder.Key = []byte(r.Repo.PrivateKey)
|
||||||
builder.Timeout = time.Duration(r.Repo.Timeout) * time.Minute
|
builder.Timeout = time.Duration(r.Repo.Timeout) * time.Second
|
||||||
builder.Privileged = r.Repo.Privileged
|
builder.Privileged = r.Repo.Privileged
|
||||||
|
|
||||||
// run the build
|
// run the build
|
||||||
|
@ -140,6 +140,7 @@ func (w *worker) Execute(r *Request) {
|
||||||
switch {
|
switch {
|
||||||
case err != nil:
|
case err != nil:
|
||||||
r.Commit.Status = model.StatusError
|
r.Commit.Status = model.StatusError
|
||||||
|
log.Printf("Error building %s, Err: %s", r.Commit.Sha, err)
|
||||||
buf.WriteString(err.Error())
|
buf.WriteString(err.Error())
|
||||||
case builder.BuildState == nil:
|
case builder.BuildState == nil:
|
||||||
r.Commit.Status = model.StatusFailure
|
r.Commit.Status = model.StatusFailure
|
||||||
|
@ -151,7 +152,7 @@ func (w *worker) Execute(r *Request) {
|
||||||
|
|
||||||
// calcualte the build finished and duration details and
|
// calcualte the build finished and duration details and
|
||||||
// update the commit
|
// update the commit
|
||||||
r.Commit.Finished = time.Now().Unix()
|
r.Commit.Finished = time.Now().UTC().Unix()
|
||||||
r.Commit.Duration = (r.Commit.Finished - r.Commit.Started)
|
r.Commit.Duration = (r.Commit.Finished - r.Commit.Started)
|
||||||
w.commits.Update(r.Commit)
|
w.commits.Update(r.Commit)
|
||||||
w.commits.UpdateOutput(r.Commit, buf.Bytes())
|
w.commits.UpdateOutput(r.Commit, buf.Bytes())
|
||||||
|
|
Loading…
Reference in a new issue