how wso2carbon patches mechanism work? - wso2

In my environment I changed the carbon UserStoreManager class extending it and placing into the org.wso2.carbon.user.core_4.2.0.jar.
This morning I got an error saying that class wasn't found.
Checking the log I found that a patch was applied and that jar overriden by a new one from the patch.
So my question is: how is this possible? what are the rules and configuration to deal with patches?
thank you

If you want to patch some jar in a wso2 server what you have to do is create a folder named patch<xxxx> inside $CARBON_HOME/repository/components/patches where xxxx is the patch number. How patching in carbon works like this. When server starts if it detects patches inside patches folder and if this is the first startup or patch0000 is not got created before then it will copy plugins folder to patch0000 which is the backup of plugins folder and then it will copy patches in to patches in to plugins one by one in ascending order. Smallest patch number first and largest at last.
So make sure your patch number is the largest.

You can refer the following documentation for more information on how to apply patch and how the patch application works in Carbon server.
[1] https://docs.wso2.com/display/AS521/WSO2+Patch+Application+Process

Related

Missing Jenkins Job Information

Recently I restarted my AWS instance and got a new IP address but after I restarted both Jenkins and AWS, the information about my previous jobs was no longer shown in Jenkins.
I checked the path and it still exists in the instance but it is not shown on the web. I tried to create another project and it still created in the same path just that only the newly created project is in. Any suggestions on how to recover my missing projects??
FYI
I have lots of old plugins that mentions "xxx failed to load" so I do not know if that is causing it.
one of my plugins does not match and all those that depends on it will fail to show on the installed section of the plugin. Thus I remove all the plugins by deleting it directly from the plugin folder and check for the working copy that was on my previous version and download the same version of plugins. After which, all the jobs come back on screen

JavaPackage org.wso2.carbon.apimgt.impl.APIManagerAnalyticsConfiguration]. It is not a function, it is "object".)

I encounter the following exception in the WSO API Manager
ERROR {JAGGERY.modules.analytics.add.jag}Error occurred while saving
Analytics configuration (Cause:Cannot call property getInstance in
object [JavaPackage
org.wso2.carbon.apimgt.impl.APIManagerAnalyticsConfiguration]. It is
not a function, it is "object".){JAGGERY.modules.analytics.add.jag}
We have no clue what leads to this problem, we are sure that we didn't change the jag files,but we did replace one class file(within the jar) with our own compiled class and replace it into the jar.
When we change back to the original jar and restart the server,the problem is still there,does anyone know what may lead to this problem and how to fix?
This can happen if APIManagerAnalyticsConfiguration class is not available in OSGi rumtime. Most possible reason is that corresponding jar is not ACTIVE. You can start the server with -DosgiConsole and see if that's the case. Here is a guide.
Did you replace a jar in plugins directory? That's actually not recommended. And that can cause OSGi activating issues too. If you really want to replace a jar, you should patch the jar by placing the jar inside <APIM_HOME>/repository/components/patches/patch0100/. Here 0100 is an arbitrary number.
We are deploying our own war app on the APIM Console. Looks the war contains a CXF jar, which conflicts with APIM's own CXF jar that leads to the problem.We are simply un-deploy the war,and the problem is gone

WS02 Minimized Deployment for GW Worker node

I would like to run WSO2 on two hosts, one serves as manager and the other as gateway worker.
I consulted the clustering guide and product profiles documentation, and I understand that after configuring the two hosts correctly, I can run the product with selected profile:
-Dprofile=gateway-manager on the manager node
-Dprofile=gateway-worker on the gateway worker node
In addition to perform selective-run, I would also like the gateway-worker to have the minimal possible deployment, i.e. to be installed only with artifacts it really needs.
Three options I can think of, from best to worst:
Download a minimized deployment package - in case there is one? In the site I saw only complete package which contains artifacts of all the components. Are there other download options which contain selective artifacts per profile?
Download the complete package and then remove the artifacts which are not necessary for gateway-worker (how do I know which files/directories to remove?)
Download the source from github and run a selective build? (which components should I build and how do I package them for deployment)?
There are no separate product packs for each profiles to download. So option 1 is not there. But you can do the option 2 to some extent. You can remove the publisher, store and admin-dashboard application from the product by removing 'jaggeryapps' folder in 'wso2am-1.10.0/repository/deployment/server/' location. Other than that we are not recommending to remove any components from the pack.
You can check the profile generation code for API Manager 1.10 in here. It only has module import definitions. These component are needed to be there for each profile.

wso2 identity server remote debug source-binary mismatch

I am trying to put together an Eclipse project for remote debugging a standard wso2-identity server. I have created a user library consisting of the dozens of wso2 jar files and tried to manually identify, download and attach the appropriate source files from SVN based on the platform-chunk-patch versioning scheme. The problem is that there is one class (and possibly others) where the source-binary mapping is not in sync making debugging impossible.
An example:
https://svn.wso2.org/repos/wso2/carbon/kernel/tags/4.2.0/core/org.wso2.carbon.user.core/4.2.0/src/main/java/org/wso2/carbon/user/core/jdbc/JDBCUserStoreManager.java
The HEAD version of this java file in SVN does not match up with the level 4 patched class binary:
./wso2is-4.6.0/repository/components/patches/patch0004/org.wso2.carbon.user.core_4.2.0.jar#uzip/org/wso2/carbon/user/core/jdbc/JDBCUserStoreManager.class
I do not want to build wso2 so the nicest solution would be if someone could point me to a wso2-is-4.6.0 patch level 04 repository of binary-source bundles, either in the form of composite jars with classes+sources or maven source artifacts.
Alternatively a URL and a revision number in SVN pointing to the correct source of JDBCUserStoreManager would suffice.
You can find the required source of JDBCUserStoreManager from here. You can find the sources of all patches for kernel here.

Installing Packaging 6.2 Error

I'm trying to install some packages on Sitecore 6.2 solution. I'm receiving a strange packager error:
“Package generation failed: Root element is missing" . I checked logs and nothing appear.
Sitecore’s packager wasn't able to generate a package.
It appears that in the process of generating the zip, it needs to access the temp folder during the creating process.
I meet this error few times and it doesn't work allways to give access just for AppPoolIdentity.If it's not working give access for role Everyone.
Here you find a nice article about this error .
I think a probable reason for this failure could be that you created package of an item or a number of items, but its template might be missing.
Alternatively, please check that your AppPoolIdentity, (ideally Network Service, to check AppPoolIdentity Name, goto IIS Manager, Application Pools and select the AppPool of your website, and in Action Pane on right side, say Advanced Settings, you will be able to see the Name of Process Model -> Identity) has read-write rights on C:\Windows\Temp directory.
Do let me know after trying the above two things on your solution
Hope this helps!
Regards,
Varun Shringarpure