Skip to content

Commit f8dac7c

Browse files
ludochgae-java-bot
authored andcommitted
Make API calls to Datastore work without the request security ticket in HTTP connector mode, so that the backend can only use the clone ticket.
PiperOrigin-RevId: 781674406 Change-Id: I3088b8c3d5748668f312a0c84e3439eea8873ba4
1 parent abf3f7f commit f8dac7c

2 files changed

Lines changed: 36 additions & 14 deletions

File tree

runtime/runtime_impl_jetty12/src/main/java/com/google/apphosting/runtime/http/HttpApiHostClient.java

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
package com.google.apphosting.runtime.http;
1818

19+
import static com.google.apphosting.runtime.AppEngineConstants.HTTP_CONNECTOR_MODE;
20+
1921
import com.google.apphosting.base.protos.RuntimePb.APIRequest;
2022
import com.google.apphosting.base.protos.RuntimePb.APIResponse;
2123
import com.google.apphosting.base.protos.RuntimePb.APIResponse.ERROR;
@@ -252,13 +254,22 @@ public void call(AnyRpcClientContext ctx, APIRequest req, AnyRpcCallback<APIResp
252254
requestTooBig(cb);
253255
return;
254256
}
255-
RemoteApiPb.Request requestPb = RemoteApiPb.Request.newBuilder()
256-
.setServiceName(req.getApiPackage())
257-
.setMethod(req.getCall())
258-
.setRequest(payload)
259-
.setRequestId(req.getSecurityTicket())
260-
.setTraceContext(req.getTraceContext().toByteString())
261-
.build();
257+
RemoteApiPb.Request requestPb =
258+
req.getApiPackage().startsWith("datastore") && Boolean.getBoolean(HTTP_CONNECTOR_MODE)
259+
? RemoteApiPb.Request.newBuilder()
260+
.setServiceName(req.getApiPackage())
261+
.setMethod(req.getCall())
262+
.setRequest(payload)
263+
// No request ID security ticket for HTTP connector mode.
264+
.setTraceContext(req.getTraceContext().toByteString())
265+
.build()
266+
: RemoteApiPb.Request.newBuilder()
267+
.setServiceName(req.getApiPackage())
268+
.setMethod(req.getCall())
269+
.setRequest(payload)
270+
.setRequestId(req.getSecurityTicket())
271+
.setTraceContext(req.getTraceContext().toByteString())
272+
.build();
262273
send(requestPb.toByteArray(), context, cb);
263274
}
264275

runtime/runtime_impl_jetty9/src/main/java/com/google/apphosting/runtime/http/HttpApiHostClient.java

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
package com.google.apphosting.runtime.http;
1818

19+
import static com.google.apphosting.runtime.AppEngineConstants.HTTP_CONNECTOR_MODE;
20+
1921
import com.google.apphosting.base.protos.RuntimePb.APIRequest;
2022
import com.google.apphosting.base.protos.RuntimePb.APIResponse;
2123
import com.google.apphosting.base.protos.RuntimePb.APIResponse.ERROR;
@@ -252,13 +254,22 @@ public void call(AnyRpcClientContext ctx, APIRequest req, AnyRpcCallback<APIResp
252254
requestTooBig(cb);
253255
return;
254256
}
255-
RemoteApiPb.Request requestPb = RemoteApiPb.Request.newBuilder()
256-
.setServiceName(req.getApiPackage())
257-
.setMethod(req.getCall())
258-
.setRequest(payload)
259-
.setRequestId(req.getSecurityTicket())
260-
.setTraceContext(req.getTraceContext().toByteString())
261-
.build();
257+
RemoteApiPb.Request requestPb =
258+
req.getApiPackage().startsWith("datastore") && Boolean.getBoolean(HTTP_CONNECTOR_MODE)
259+
? RemoteApiPb.Request.newBuilder()
260+
.setServiceName(req.getApiPackage())
261+
.setMethod(req.getCall())
262+
.setRequest(payload)
263+
// No request ID security ticket for HTTP connector mode.
264+
.setTraceContext(req.getTraceContext().toByteString())
265+
.build()
266+
: RemoteApiPb.Request.newBuilder()
267+
.setServiceName(req.getApiPackage())
268+
.setMethod(req.getCall())
269+
.setRequest(payload)
270+
.setRequestId(req.getSecurityTicket())
271+
.setTraceContext(req.getTraceContext().toByteString())
272+
.build();
262273
send(requestPb.toByteArray(), context, cb);
263274
}
264275

0 commit comments

Comments
 (0)