Known issues

This page contains known issues in Cloud Endpoints Frameworks.

Java and Python

This section describes known issues that affect both the Java and Python versions of Endpoints Frameworks.

Maximum request timeout

For APIs using Endpoints Frameworks version 2, the maximum request timeout is 60 seconds.

Endpoints Frameworks migration

When you migrate your API to Endpoints Frameworks version 2, you must deploy your API to a new App Engine app. If you reuse the old App Engine app, requests that begin with the version 1 path, /_ah/spi, might get routed to the Endpoints Frameworks version 2 backend, which expects paths to begin with /_ah/api.

Poor performance on automatic scaling instances

App Engine offers three scaling types: basic, manual, and automatic. Endpoints Frameworks uses background threads, which automatic scaling instances don't support. Endpoints Frameworks must communicate with Google services to check quotas and report API activity, among other things. For basic and manual scaling instances, a background thread performs this communication to avoid slowing down requests. Automatic scaling instances, however, don't support background threads. Instead, the communication with Google services happens during the request. Endpoints Frameworks still works, but with potentially reduced performance.

Because of this issue, you might want to configure another scaling type. See the following sections in the App Engine documentation:

Paths with trailing slashes aren't supported

When you deploy an OpenAPI document by using gcloud endpoints services deploy, Cloud Endpoints rejects OpenAPI documents that include paths with a trailing slash, for example:

paths:
  "/echo/":
    post:
      description: "Echo back a given message."

In Endpoints Frameworks, you must remove the trailing slash in the Python method decorator or the Java method annotation.

Java

This section describes known issues in Endpoints Frameworks for Java.

Cloud Endpoints Frameworks for Java - version 1.0.14 or older

Includes an issue where new fields in the Google Service Configuration causes the Cloud Endpoints Frameworks Java library to fail when parsing the Service Config. The errors will similar to the following when using service configurations created after December 5th, 2024:

Failed to parse the HTTP response as service configuration
com.google.api.config.ServiceConfigException: Failed to parse the HTTP response as service configuration

See the release notes for more information on upgrading to version 1.0.15 or later.

Legacy (v1) Java Endpoints Frameworks

Endpoints Frameworks version 1 for Java has a bug that throws an exception when an enum is annotated. This issue is caused by a dependency on an old version of Jackson. To workaround this issue, you must migrate to Endpoints Frameworks version 2.

Python

This section describes known issues in Endpoints Frameworks for Python.

Error message: ImportError: cannot import name locked_file

When you run pip install with a requirements.txt file, you might get an ImportError: cannot import name locked_file error message. The issue is caused when pip installs a version of the oauth2client package that is incompatible with google-endpoints-api-management. To workaround this issue, make sure that the google-endpoints and google-endpoints-api-management lines appear first in your requirements.txt file, for example:

google-endpoints==4.8.0
google-endpoints-api-management==1.11.1
# Newer versions of rsa module are incompatible with Python 2.7
rsa==4.5; python_version < '3'

Add other requirements after these lines.

API returns 404 errors when testing locally

Symptom: All endpoints return 404 when you use dev_appserver.py to test your API locally, but when you deploy your API to App Engine, the endpoints respond as expected. This issue has been observed in applications that use the Django-six library.

This issue is caused by a version conflict between the python-future library, which is included in both the Endpoints Frameworks for Python library and the Django-six library. The exact version of the Django-six library causing the conflict is unknown at this time.