Custom Snap Pack versioning is broken?

I have a custom snappack (version = 1, sl_build = 42) deployed in my organization’s shared folder that is in used by multiple projects. I have developed a completely rewritten version of the snappack (version = 2, sl_build = 1) that I have deployed in my personal project (projects/Robert Patrick).

I created a brand new pipeline (also in my personal project space) after deploying the new version of the snappack. Unfortunately, the pipeline is using the version 1 snap instead of the version 2 snap. What am I doing wrong? How do I build a pipeline that uses the version 2 snap?

organization’s shared folder is Project space’s / shared or project / shared ?

Can you provide some screenshot’s ?

@rpatrick00 when you referred as organization’s shared folder, is it global shared (shared) folder or projects/shared folder ?

I am not sure why there is so much confusion with my terminology but when I say each of the following terms, here is how they map to the asset path

  • “organization’s shared folder” (aka. the “global” shared folder) => /<myorg>/shared
  • “my project folder” => /<myorg>/projects/Robert Patrick

While this is not relevant to this particular issue:

  • “my project space’s shared folder” => /<myorg>/<my-project-space>/shared

Hopefully this clears up any confusion regarding my terminology.

Just to make sure we are focusing on the right issue, everything works fine as long as all of the different “versions” of the custom snap pack use the same VERSION number (in pom.xml, src/config/directives, and the snap’s @Version annotation).

Given that “built-in” snap pack versions are chosen at the global level (Manager => Snap Packs), my suspicion is that SnapLogic does not support versioning of custom snap packs where the version number itself is different.

Hi Robert.

Does the snap catalog show both versions of the pack? I would guess that it does. I think the idea with this scheme is to support deploying multiple distinct versions of a snap pack. If you prefer to replace an existing pack, you would use the same VERSION but a new build number.

So if you want to use the new version in your pipelines that have instances of the old version of the snaps, I believe you’d need to replace those older snap instances with new instances created using the new version.

Hope that helps.

@ptaylor No, the Catalog only shows one version.

@rpatrick00, how do you know which version the catalog is showing?

Can you give us the versions you are seeing and what version you expect to see?

Please note, the snap catalogs take significant time to fetch and produce a large payload, so we cache them pretty aggressively. They are fetched only once by designer.

The only way I know is by creating a pipeline with one of the snaps.

Yes, but what version are you seeing and what version are you expecting?

If you could give us the class_fqid that would help.

Also, what project are you trying to create the pipeline in?

Robert,

I’ve been testing this using a new snap pack created with our maven archetype.

I’ve been successfully able to update the version number and get the behavior you expect, where the new version just replaces the old one.

However, there are number of places where the version and build numbers need to match:

  1. The VERSION property in the <properties> section of the pom. You’ve changed this to 2.
  2. The sl_build property in the <properties> section. You’ve changed this to 1, correct?
  3. The <version> at the top of the pom should be VERSION-sl_build, so in your case 2_1.
  4. The VERSION in the config/directives file should be 2.
  5. The @Version annotations on all of the snaps and accounts should have snap = 2.

Can you please verify all of that?

Also, after uploading the new zip file, you need to refresh the Designer tab in your browser so that the catalog is reloaded. You’ll see the old version number if you don’t do that. I assume you refreshed.

@ptaylor I can confirm all of this. I am able to see the new version of the snap but it seems like I am still picking up the old version’s custom account… :frowning:

Ok, I hadn’t tested an account yet. Let me try that…

Hmm, I’m not able to reproduce that. In my test, I just went from 4_2 to 5_1 and I see the expected updated FQID on both snaps and the account that I had previously created with the older version.

Can you please clarify exactly what you mean by “I am still picking up the old version’s custom account”? Is the FQID not what you expect? The account settings UI? The account’s behavior?

@ptaylor I am not sure what to say but I am seeing a problem.

In my release 1 branch (the one deployed in the global shared folder), line 78 of OdysseyApiAccount looks like this:

        if (String.class.isAssignableFrom(valueObj.getClass())) {

In version 2 of the OdysseyApiAccount, line 78 looks like this:

    private static final String PASSWORD_LABEL = "Password";

When I create the pipeline in my projects/Robert Patrick folder (where V2 of the snap is deployed), I am getting the following NullPointerException.

Pretty sure this proves that Version 1 of the Account class is being used…

Yes, that’s pretty convincing. Very odd. Have you tried restarting the jcc?

@ptaylor here is what I have found:

  1. I restarted by two groundplex servers and verified that no versions of the snaps are downloaded to either server.
  2. I have version 1_47 deployed at the global shared level and 2_5 deployed at projects/Robert Patrick
  3. I created a new pipeline in projects/Robert Patrick
  4. I added a custom snap to the pipeline.
  5. I created an account in projects/Robert Patrick and validated it
  6. I configured the rest of the snap and added a JSONGenerator and Mapper
  7. I still get the NullPointerException at line 78 in OdysseyApiAccount
  8. When I look at the groundplexes, I see both 1_47 and 2_5 have been downloaded even though I am pretty sure that I am the only one using it right now…

Ok, this sounds like a conflict between the two different versions deployed at different levels of the project. Let me see if I can reproduce that.

@ptaylor thanks.

The other clue that I can give you is that if I change the new version numbers from 2 back to 1 and redeploy like this, everything works fine. I know the new version is picking up the new Account version because I have extra data in the new account version that the snaps depend on for “suggestions” and the suggestions are working in this configuration.

If I clear out everything and switch the version numbers back to 2, it doesn’t work.