Salesforce offers an endpoint to know which version is available but doesn't mention if the latest version is available globally or locally, on the requested instance.
For example, the latest version on eu6 is 37 but is it the same globally and can I use the version 37 by hard coding it in my code or everytime a new customer create an account, I need to store the latest version available for his instance region ?
The version endpoint is not global it only applies to the one instance you asked on (eu6 in your example). You should build an integration against a specific version. Worst case latest version -1 is available everywhere, so you could build an integration once today against v36 and it will work for all users of salesforce.
Related
Within IntelliJ I have a Google App Engine Standard Local Server running. I'm in the process of updating to Java 17 and also all of my 3rd party libraries and have moved to Jetty 11.0.11 in all of my project's pom files. However, when I start up the server I see:
INFO:oejs.Server:main: jetty-9.4.46.v20220331
and I'm getting failures that seem to confirm the above, that an older version of Jetty is being used.
Where can I update the Jetty version that the app engine uses?
Also, I'm using Google appengine 2.0.5
Here's the stack trace. The latest versions should be using jakarta.ws.rs.Path instead of javax.
java.lang.TypeNotPresentException: Type javax.ws.rs.Path not present
at
java.base/sun.reflect.annotation.TypeNotPresentExceptionProxy.generateException(TypeNotPresentExceptionProxy.java:47)
at
java.base/sun.reflect.annotation.AnnotationInvocationHandler.invoke(AnnotationInvocationHandler.java:89)
at jdk.proxy2/jdk.proxy2.$Proxy2.value(Unknown Source) at
org.eclipse.jetty.annotations.AnnotationConfiguration.createServletContainerInitializerAnnotationHandlers(AnnotationConfiguration.java:579)
at
org.eclipse.jetty.annotations.AnnotationConfiguration.configure(AnnotationConfiguration.java:343)
at
org.eclipse.jetty.webapp.WebAppContext.configure(WebAppContext.java:498)
at
org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1409)
at
org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:916)
at
org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:288)
at
org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:524)
at
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
at
org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
at
org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:110)
at
org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97)
at
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
at
org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
at org.eclipse.jetty.server.Server.start(Server.java:423) at
org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:110)
at
org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97)
at org.eclipse.jetty.server.Server.doStart(Server.java:387) at
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
at
com.google.appengine.tools.development.jetty9.JettyContainerService.startContainer(JettyContainerService.java:366)
To update the Jetty version to the latest one, I would suggest updating the Cloud SDK to the latest version. Based on the documentation, the most recent release of Cloud SDK is version 395.0.0 (2022-07-26) and according to the release notes, the latest Java SDK version is 1.9.98 and latest Jetty version is 11.0.11
I would recommend trying to upgrade the Cloud SDK by following this documentation so the Jetty version is updated to the latest one.
EDIT: If you think it’s a valid feature request you may raise here with a clear description why you are thinking it’s a feature request. Good feature requests will solve common problems or enable new use cases.
We are creating a managed package and want to list it on appexchange.
However, we would like to know salesforce behaviour in below situation since we couldn't find any conclusive docs:
If user has installed appexchange managed package v1. And we have
released new managed package version v2 which is not authorized by
appexchange currently. If we provide this managed package link to
user, can it be installed over appexchange product v1? What are the
implications? Can user later install any new version of package
that is appexchange approved?
And we have released new managed package version v2 which is not authorized by appexchange currently.
If you have released a new version of the same managed package, yes, your users can upgrade from 1.0 to 2.0. If you are using second-generation packaging, there has to be an ancestry line between 1.0 and 2.0 (this is always true for first-generation packaging).
I'm not sure what you mean about "authorized by AppExchange". Possibly you're saying that 2.0 has not been sent through the ISV Security Review process.
If we provide this managed package link to user, can it be installed over appexchange product v1?
Yes.
What are the implications?
I would need to be clearer on what you mean to assess implications.
Can user later install any new version of package that is appexchange approved?
Yes.
When I deploy a project I get this error
INVALID_ARGUMENT: Your app may not have more than 15 versions. Please delete one of the existing versions before trying to create a new version.
I also went to versions on google cloud and tried to delete it manually but it says you can not delete a version with traffic shares.
Please help, any advice are greatly appreciated
You'll need to keep one version (latest maybe?) and then migrate all traffic to it with the "Split Traffic" link here, away from all the other versions you want to delete.
Then you will be able to select and delete those versions since they no longer handle traffic.
Finally you deploy the new version (in fact you could do that as soon as you deleted enough versions to no longer see that error) and, if needed, migrate traffic to it.
Also see gcloud app deploy for options related to versioning and traffic migration right at deployment time which could help you prevent such situation in the future:
--promote
Promote the deployed version to receive all traffic.
True by default. To change the default behavior for your current
environment, run:
$ gcloud config set app/promote_by_default false
Overrides the default promote_by_default property value for this
command invocation. Use --no-promote to disable.
--stop-previous-version
Stop the previously running version when deploying a new version
that receives all traffic. Overrides the default
stop_previous_version property value for this command invocation.
Use --no-stop-previous-version to disable.
--version=VERSION, -v VERSION
The version of the app that will be created or replaced by this
deployment. If you do not specify a version, one will be generated for
you.
Suppose I uploaded another version (say, "version: 2" in file app.yaml ) of my Google App Engine application. Version 1 is still the default and version 2 is for testing. How do I run it then?
Once you upload a version on Appengine, you can switch between them easily.
Say that your app name is myapp, currently running version 1. You also have uploaded a version called 2-testing. Your default app (with version 1) can be reached by accessing myapp.appspot.com
If you wanted to access your versions explicitly, you joust need to access <version_name>-dot-myapp.appspot.com. Following the example it would be:
1-dot-myapp.appspot.com or 2-testing-dot-myapp.appspot.com
The -dot- is equivalent to <version>.<appname> but allows you to correctly serve a secure application with SSL
You can mark any version you want as default (serving myapp.appspot.com) using the admin console
edit: this is the official documentation page talking about domains and subdomains in Appengine
Under versions in your admin console you can find the live uri of a version, if you select the version.
And you can use traffic splitting, where you can use your own client ip or a cookie to test a version.
Docs: https://developers.google.com/appengine/docs/adminconsole/trafficsplitting
If I build an app for Windows Phone 7 and release V1 they purchase it and download it from the app store. Now let's say there's a bug or I release a new version. How do I publish a new version of the app without them having to pay for downloading a new version of the app?
You publish the update via the marketplace in the same way that you releassed the original version. (Except you say that it's an update.)
Anyone with the app installed will be told that there is an update available and given the option to install it. You can't force the update.
You can't force the upgrade on users.
All updates are free.
If you wanted a paid upgrade/update this would need to be a new app in the Marketplace. You could also remove the old version if/as necessary.
More information at http://developer.windowsphone.com/Marketplace.aspx