Skip to content

Commit 63a7275

Browse files
ludochgae-java-bot
authored andcommitted
fix the "invalid handle" error reporting when httpconnector flag is on. The change now always uses the clone security ticket instead of the request based ticket, so that datastore API can happen even just after a request is committed.
PiperOrigin-RevId: 826192522 Change-Id: I5f46bc6e0d7cd0ad51e07314a19d61c77e86e4a8
1 parent 648267b commit 63a7275

3 files changed

Lines changed: 53 additions & 21 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_jetty121/src/main/java/com/google/apphosting/runtime/http/HttpApiHostClient.java

Lines changed: 17 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;
@@ -257,13 +259,21 @@ public void call(AnyRpcClientContext ctx, APIRequest req, AnyRpcCallback<APIResp
257259
return;
258260
}
259261
RemoteApiPb.Request requestPb =
260-
RemoteApiPb.Request.newBuilder()
261-
.setServiceName(req.getApiPackage())
262-
.setMethod(req.getCall())
263-
.setRequest(payload)
264-
.setRequestId(req.getSecurityTicket())
265-
.setTraceContext(req.getTraceContext().toByteString())
266-
.build();
262+
req.getApiPackage().startsWith("datastore") && Boolean.getBoolean(HTTP_CONNECTOR_MODE)
263+
? RemoteApiPb.Request.newBuilder()
264+
.setServiceName(req.getApiPackage())
265+
.setMethod(req.getCall())
266+
.setRequest(payload)
267+
// No request ID security ticket for HTTP connector mode.
268+
.setTraceContext(req.getTraceContext().toByteString())
269+
.build()
270+
: RemoteApiPb.Request.newBuilder()
271+
.setServiceName(req.getApiPackage())
272+
.setMethod(req.getCall())
273+
.setRequest(payload)
274+
.setRequestId(req.getSecurityTicket())
275+
.setTraceContext(req.getTraceContext().toByteString())
276+
.build();
267277
send(requestPb.toByteArray(), context, cb);
268278
}
269279

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)