Fix #99549: Remember Previous Status #104217

Merged
Sybren A. Stüvel merged 16 commits from Evelinealy/flamenco:web-api-upgrade into main 2023-06-02 22:50:10 +02:00
18 changed files with 291 additions and 286 deletions
Showing only changes of commit bdc260bc69 - Show all commits

4
.env.example Normal file
View File

@ -0,0 +1,4 @@
# Copy this file as .env
# SSH account & hostname for publishing.
WEBSERVER_SSH=user@domain
WEBSERVER_ROOT=/path-to/flamenco.blender.org

1
.gitignore vendored
View File

@ -5,6 +5,7 @@
*.db
*.blend[0-9]
*.flamenco.blend
.env
/flamenco-manager
/flamenco-worker

View File

@ -1,3 +1,5 @@
-include .env
PKG := git.blender.org/flamenco
# To update the version number in all the relevant places, update the VERSION
@ -41,10 +43,6 @@ FFMPEG_VERSION=5.0.1
TOOLS=./tools
TOOLS_DOWNLOAD=./tools/download
# SSH account & hostname for publishing.
WEBSERVER_SSH=flamenco@flamenco.blender.org
WEBSERVER_ROOT=/var/www/flamenco.blender.org
all: application
# Install generators and build the software.
@ -230,16 +228,31 @@ clean-webapp-static:
touch ${WEB_STATIC}/emptyfile
project-website:
$(MAKE) -s check-environment
rm -rf web/project-website/public/
cd web/project-website; hugo --baseURL https://flamenco.blender.org/
rsync web/project-website/public/ ${WEBSERVER_SSH}:${WEBSERVER_ROOT}/ \
-va \
-e "ssh" \
-a \
--exclude v2/ \
--exclude downloads/ \
--exclude .well-known/ \
--exclude .htaccess \
--delete-after
# For production deployments: check variables stored in .env
.PHONY: check-environment
check-environment:
ifndef WEBSERVER_SSH
@echo "WEBSERVER_SSH not found. Check .env or .env.example"
exit 1
endif
ifndef WEBSERVER_ROOT
@echo "WEBSERVER_ROOT not found. Check .env or .env.example"
exit 1
endif
# Download & install FFmpeg in the 'tools' directory for supported platforms.
.PHONY: tools
tools:
@ -338,6 +351,7 @@ release-package-windows:
.PHONY: publish-release-packages
publish-release-packages:
$(MAKE) -s check-environment
cd dist; sha256sum ${RELEASE_PACKAGE_LINUX} ${RELEASE_PACKAGE_DARWIN} ${RELEASE_PACKAGE_WINDOWS} > ${RELEASE_PACKAGE_SHAFILE}
cd dist; rsync -va \
${RELEASE_PACKAGE_LINUX} ${RELEASE_PACKAGE_DARWIN} ${RELEASE_PACKAGE_WINDOWS} ${RELEASE_PACKAGE_SHAFILE} \

View File

@ -44,7 +44,7 @@ class WorkerMgtApi(object):
self.api_client = api_client
self.create_worker_cluster_endpoint = _Endpoint(
settings={
'response_type': None,
'response_type': (WorkerCluster,),
'auth': [],
'endpoint_path': '/api/v3/worker-mgt/clusters',
'operation_id': 'create_worker_cluster',
@ -691,7 +691,7 @@ class WorkerMgtApi(object):
async_req (bool): execute request asynchronously
Returns:
None
WorkerCluster
If the method is called asynchronously, returns the request
thread.
"""

View File

@ -4,7 +4,7 @@
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**value** | **str** | | must be one of ["active", "canceled", "completed", "construction-failed", "failed", "paused", "queued", "archived", "archiving", "cancel-requested", "requeueing", "under-construction", ]
**value** | **str** | | must be one of ["active", "canceled", "completed", "failed", "paused", "queued", "cancel-requested", "requeueing", "under-construction", ]
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@ -19,7 +19,7 @@ Method | HTTP request | Description
# **create_worker_cluster**
> create_worker_cluster(worker_cluster)
> WorkerCluster create_worker_cluster(worker_cluster)
Create a new worker cluster.
@ -53,7 +53,8 @@ with flamenco.manager.ApiClient() as api_client:
# example passing only required values which don't have defaults set
try:
# Create a new worker cluster.
api_instance.create_worker_cluster(worker_cluster)
api_response = api_instance.create_worker_cluster(worker_cluster)
pprint(api_response)
except flamenco.manager.ApiException as e:
print("Exception when calling WorkerMgtApi->create_worker_cluster: %s\n" % e)
```
@ -67,7 +68,7 @@ Name | Type | Description | Notes
### Return type
void (empty response body)
[**WorkerCluster**](WorkerCluster.md)
### Authorization
@ -83,7 +84,7 @@ No authorization required
| Status code | Description | Response headers |
|-------------|-------------|------------------|
**204** | The cluster was created. | - |
**200** | The cluster was created. The created cluster is returned, so that the caller can know its UUID. | - |
**0** | Error message | - |
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)

View File

@ -55,12 +55,9 @@ class JobStatus(ModelSimple):
'ACTIVE': "active",
'CANCELED': "canceled",
'COMPLETED': "completed",
'CONSTRUCTION-FAILED': "construction-failed",
'FAILED': "failed",
'PAUSED': "paused",
'QUEUED': "queued",
'ARCHIVED': "archived",
'ARCHIVING': "archiving",
'CANCEL-REQUESTED': "cancel-requested",
'REQUEUEING': "requeueing",
'UNDER-CONSTRUCTION': "under-construction",
@ -115,10 +112,10 @@ class JobStatus(ModelSimple):
Note that value can be passed either in args or in kwargs, but not in both.
Args:
args[0] (str):, must be one of ["active", "canceled", "completed", "construction-failed", "failed", "paused", "queued", "archived", "archiving", "cancel-requested", "requeueing", "under-construction", ] # noqa: E501
args[0] (str):, must be one of ["active", "canceled", "completed", "failed", "paused", "queued", "cancel-requested", "requeueing", "under-construction", ] # noqa: E501
Keyword Args:
value (str):, must be one of ["active", "canceled", "completed", "construction-failed", "failed", "paused", "queued", "archived", "archiving", "cancel-requested", "requeueing", "under-construction", ] # noqa: E501
value (str):, must be one of ["active", "canceled", "completed", "failed", "paused", "queued", "cancel-requested", "requeueing", "under-construction", ] # noqa: E501
_check_type (bool): if True, values for parameters in openapi_types
will be type checked and a TypeError will be
raised if the wrong type is input.
@ -205,10 +202,10 @@ class JobStatus(ModelSimple):
Note that value can be passed either in args or in kwargs, but not in both.
Args:
args[0] (str):, must be one of ["active", "canceled", "completed", "construction-failed", "failed", "paused", "queued", "archived", "archiving", "cancel-requested", "requeueing", "under-construction", ] # noqa: E501
args[0] (str):, must be one of ["active", "canceled", "completed", "failed", "paused", "queued", "cancel-requested", "requeueing", "under-construction", ] # noqa: E501
Keyword Args:
value (str):, must be one of ["active", "canceled", "completed", "construction-failed", "failed", "paused", "queued", "archived", "archiving", "cancel-requested", "requeueing", "under-construction", ] # noqa: E501
value (str):, must be one of ["active", "canceled", "completed", "failed", "paused", "queued", "cancel-requested", "requeueing", "under-construction", ] # noqa: E501
_check_type (bool): if True, values for parameters in openapi_types
will be type checked and a TypeError will be
raised if the wrong type is input.

View File

@ -600,9 +600,9 @@ func (db *DB) AddWorkerToTaskFailedList(ctx context.Context, t *Task, w *Worker)
// Integer literals are of type `int`, so that's just a bit nicer to work with
// than `int64`.
if numFailed64 > math.MaxUint32 {
if numFailed64 > math.MaxInt32 {
log.Warn().Int64("numFailed", numFailed64).Msg("number of failed workers is crazy high, something is wrong here")
return math.MaxUint32, tx.Error
return math.MaxInt32, tx.Error
}
return int(numFailed64), tx.Error
}

View File

@ -1601,12 +1601,9 @@ components:
- active
- canceled
- completed
- construction-failed
- failed
- paused
- queued
- archived
- archiving
- cancel-requested
- requeueing
- under-construction

View File

@ -4209,6 +4209,7 @@ func (r FetchWorkerClustersResponse) StatusCode() int {
type CreateWorkerClusterResponse struct {
Body []byte
HTTPResponse *http.Response
JSON200 *WorkerCluster
JSONDefault *Error
}
@ -6307,6 +6308,13 @@ func ParseCreateWorkerClusterResponse(rsp *http.Response) (*CreateWorkerClusterR
}
switch {
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200:
var dest WorkerCluster
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON200 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true:
var dest Error
if err := json.Unmarshal(bodyBytes, &dest); err != nil {

View File

@ -19,215 +19,216 @@ import (
var swaggerSpec = []string{
"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",
"v378fwEAAP//JyvfICwBAQA=",
}
// GetSwagger returns the content of the embedded swagger specification file

View File

@ -59,18 +59,12 @@ const (
const (
JobStatusActive JobStatus = "active"
JobStatusArchived JobStatus = "archived"
JobStatusArchiving JobStatus = "archiving"
JobStatusCancelRequested JobStatus = "cancel-requested"
JobStatusCanceled JobStatus = "canceled"
JobStatusCompleted JobStatus = "completed"
JobStatusConstructionFailed JobStatus = "construction-failed"
JobStatusFailed JobStatus = "failed"
JobStatusPaused JobStatus = "paused"

View File

@ -23,21 +23,21 @@
package touch
import (
"syscall"
"unsafe"
"os"
"golang.org/x/sys/unix"
)
// touch is the same as syscall.utimes, but passes NULL as timestamp pointer (instead of a
// pointer to a concrete time).
// touch uses uni.UtimesNano() in order to pass the special 'now' timestamps
// available in that package.
func touch(path string) (err error) {
var _p0 *byte
_p0, err = syscall.BytePtrFromString(path)
if err != nil {
return
now := unix.Timespec{
Sec: 0,
Nsec: unix.UTIME_NOW,
}
_, _, e1 := syscall.Syscall(syscall.SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(0), 0)
if e1 != 0 {
err = syscall.Errno(e1)
utimes := []unix.Timespec{now, now}
if e := unix.UtimesNano(path, utimes); e != nil {
return &os.PathError{Op: "chtimes", Path: path, Err: e}
}
return
return nil
}

View File

@ -45,7 +45,7 @@ export default class WorkerMgtApi {
/**
* Create a new worker cluster.
* @param {module:model/WorkerCluster} workerCluster The worker cluster.
* @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing HTTP response
* @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing data of type {@link module:model/WorkerCluster} and HTTP response
*/
createWorkerClusterWithHttpInfo(workerCluster) {
let postBody = workerCluster;
@ -66,7 +66,7 @@ export default class WorkerMgtApi {
let authNames = [];
let contentTypes = ['application/json'];
let accepts = ['application/json'];
let returnType = null;
let returnType = WorkerCluster;
return this.apiClient.callApi(
'/api/v3/worker-mgt/clusters', 'POST',
pathParams, queryParams, headerParams, formParams, postBody,
@ -77,7 +77,7 @@ export default class WorkerMgtApi {
/**
* Create a new worker cluster.
* @param {module:model/WorkerCluster} workerCluster The worker cluster.
* @return {Promise} a {@link https://www.promisejs.org/|Promise}
* @return {Promise} a {@link https://www.promisejs.org/|Promise}, with data of type {@link module:model/WorkerCluster}
*/
createWorkerCluster(workerCluster) {
return this.createWorkerClusterWithHttpInfo(workerCluster)

View File

@ -40,13 +40,6 @@ export default class JobStatus {
"completed" = "completed";
/**
* value: "construction-failed"
* @const
*/
"construction-failed" = "construction-failed";
/**
* value: "failed"
* @const
@ -68,20 +61,6 @@ export default class JobStatus {
"queued" = "queued";
/**
* value: "archived"
* @const
*/
"archived" = "archived";
/**
* value: "archiving"
* @const
*/
"archiving" = "archiving";
/**
* value: "cancel-requested"
* @const

View File

@ -12,14 +12,15 @@ people.
Replace `${VERSION}` with the actual version number.
1. Ensure that env variables are set in the `.env` file (see `.env.example` for reference)
1. Update `CHANGELOG.md` and mark the to-be-released version as released today.
2. Update `web/project-website/data/flamenco.yaml` for the new version.
3. Update `Makefile` and change the `VERSION` and `RELEASE_CYCLE` variables.
4. `make update-version`
5. `git commit -m "Bump version to ${VERSION}"`
6. `git tag v${VERSION}`
7. `make release-package`
8. Check that the files in `dist/` are there and have a non-zero size.
9. `make publish-release-packages` to upload the packages to the website.
10. `make project-website` to generate and publish the new website.
11. `git push && git push --tags`
1. Update `web/project-website/data/flamenco.yaml` for the new version.
1. Update `Makefile` and change the `VERSION` and `RELEASE_CYCLE` variables.
1. `make update-version`
1. `git commit -m "Bump version to ${VERSION}"`
1. `git tag v${VERSION}`
1. `make release-package`
1. Check that the files in `dist/` are there and have a non-zero size.
1. `make publish-release-packages` to upload the packages to the website.
1. `make project-website` to generate and publish the new website.
1. `git push && git push --tags`

View File

@ -118,6 +118,14 @@ This means that you have to click on the little "Refresh" icon next to the job t
<img src="job-types-refresh.webp" width="396" height="41">
## Render jobs hang after the first chunk of frames, what's wrong?
When rendering a chunk of frames, Flamenco waits until Blender quits. This
signals Flamenco that it finished rendering. Sometimes an add-on prevents
Blender from quitting, and thus Flamenco will think it is still doing something.
Disable add-ons one-by-one to see which one is causing this issue.
## What does "command exited abnormally with code 1" mean?
It means that the program (probably Blender) exited with an error status. Take a

View File

@ -3,7 +3,7 @@ title: Job Types
weight: 10
---
Flamenco uses JavaScript files called *job compiler scripts* or two things. They
Flamenco uses JavaScript files called *job compiler scripts* for two things. They
- define a *job type*, with its own set of settings, and
- convert a job of this type (like "*render this Blend file*") into concrete