Cannot share folders with a community

A customer notified me of a problem a user faced when trying to share a folder to a community. Quickly we found the problem was with the community and not the folder as the folder could be shared with other communities and various folders could not be shared with this specific community. This was a community that was created in Connections 3.0.1.

The user saw different errors in the web browser compared with the Windows connector.

2013-07-15_170714

2013-07-15_170726

I found  a forum entry but it did not provide any resolution or technical details. I did some looking into SNCOMM and FILES and could not see anything obviously wrong so I raised a PMR.

IBM quickly came back and asked me to run FilesDataIntegrityService.syncAllCommunityShares(). This is a command that should be run after upgrade/migration to Connections 4.0 so with some dubiousness I ran the command. In my wsadmin window I observed a number of lines of output but two for the particular community.

[08/07/13 15:08:18:462 IST] 000028fd SyncCommunity I   EJPVJ9418I: The community 8ac6c344-43d8-4321-a292-2b952c55bd9d has been synchronized and now has visibility PRIVATE and name Parent Community.
[08/07/13 15:08:20:541 IST] 000028fd SyncCommunity I   EJPVJ9418I: The community feba9b69-6b05-45db-adb9-ea1c6d26073f has been synchronized and now has visibility PRIVATE and name sub-community.

I’m not sure what these lines mean (awaiting an answer from IBM) but it worked and the user can now share his folder with the community.

Problem creating a community blog – “Error 409: conflict”

The customer reported a problem when trying to add the blogs widget to a community, an “error 409: conflict” appeared stopping the user from being able to create a blog. Interestingly, the user could see from a list of their own blogs a blog with the same name as the community. Further inspection shows that the blog is restricted like the community is.

The history is somewhat unclear, the community owner didn’t know when this broke.

The below is a snippet from the SystemOut.log

07/02/12 16:17:06:226 GMT] 0000002a EventPropagat E com.ibm.lconn.widgets.service.EventPropagater postRemoteEvent CLFWZ0003E: Failed to post event notification to remote widget application handler: Conflict
com.ibm.lconn.widgets.model.NoRetryConflictException: Conflict
at com.ibm.lconn.widgets.service.EventPropagater.postRemoteEvent(EventPropagater.java:467)
at com.ibm.lconn.widgets.service.EventPropagater.addWidget(EventPropagater.java:664)
at com.ibm.lconn.widgets.service.WidgetInfoService.addWidgetPropagateInternal(WidgetInfoService.java:223)
at com.ibm.lconn.widgets.service.WidgetInfoService.addWidget(WidgetInfoService.java:308)
at com.ibm.lconn.widgets.actions.AddWidgetAction.execute(AddWidgetAction.java:67)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)

Checking the community queued events showed nothing pending to be actioned:

wsadmin>CommunitiesQEventService.viewQueuedEventsByResourceType(“community”, None, 100)
Remote App                Resource Id                       Event Type                          Event Id
Forum   1212121-47e4-4c0a-8320-0fe580e39167    remote.app.added        Wdf3e4e9995c1_4051_86be_e2a21c0d264b
Forum   1212121-47e4-4c0a-8320-0fe580e39167    community.prepare.delete        W7932e51b96d8_4fa6_a791_850222cc7942

{EventType=205, InsertedLong=1328106813866, EventId=W7932e51b96d8_4fa6_a791_850222cc7942, ResourceType=1, Inserted=2012-02-01 14:33:33.866, ResourceId=41a5d0d7-47e4-4c0a-8320-0fe580e39167, ResourceTypeStr=community, RemAppDefId=Forum, EventTypeStr=community.prepare.delete}

wsadmin>CommunitiesQEventService.viewQueuedEventsByResourceId(“community”, “123456-ba1e-4fae-9315-1e268bbc7b23”, None, 100)
Remote App                Resource Id                       Event Type                          Event Id

wsadmin>CommunitiesQEventService.viewQueuedEventsByRemoteAppDefId(“Blog”, None, 100)
Resource Type           Resource Id                         Event Type                          Event Id

Enabling trace and taking Fiddler logs provided with nothing more than the “409 conflict” error in the trace.log.

com.ibm.lconn.widgets.*=all:com.ibm.lconn.extdatamodel.*=all:com.ibm.connections.httpClient.*=all

What did work was the following steps all detailed in the Connections wiki.

Comparing remote application data with the Communities database

This step was not really necessary but was more interesting to ensure the IDs tallied.

execfile(“blogsAdmin.py”)

BlogsAdminService.exportSyncedResourceInfo(“/tmp/blogsOutput.xml”, “community”)

blogsOutput.xml
<snx:resource type=”community” id=”04e92737-ba1e-4fae-9315-1e268bbc7b23“>
<snx:property name=”communityType”>private</snx:property>
<snx:property name=”communityThemeId”>blue</snx:property>
<snx:objectIdentifyingTerm>ACME Jobs</snx:objectIdentifyingTerm>
<snx:objectIdentifyingId>65e0bc22-7994-4b39-bca3-37f15b0d0966</snx:objectIdentifyingId>
</snx:resource>

Generating a synchronization report

This produces two documents. The orphanedRemoteApplications.html file lists the remote applications for which there is either no associated community or whose associated community is missing the orphaned data’s widget, this is the one of interest. From it you can see the affected community and the id of the orphaned blog.

execfile(“communitiesAdmin.py”)

CommunitiesRemoteAppService.generateSyncReports(“/tmp/blogsOutput.xml”, “/tmp”)

In the Blog_orphanedRemoteApps.html I see the Community in question (as well as others….)

No widgets with widget definition id of Blog were found.
community name: ACME Jobs
community uuid: 04e92737-ba1e-4fae-9315-1e268bbc7b23
Identifying Term (Blog Name): ACME Jobs
Identifying Id (BlogUuid): 65e0bc22-7994-4b39-bca3-37f15b0d0966

Assigning orphaned remote applications to a community

execfile(“communitiesAdmin.py”)

CommunitiesRemoteAppService.assignRemoteApp(“Blog”, “65e0bc22-7994-4b39-bca3-37f15b0d0966“, “04e92737-ba1e-4fae-9315-1e268bbc7b23“, “04e92737-ba1e-4fae-9315-1e268bbc7b23“, “col2”)

Assignment succeeded

Inspecting the community now shows the blogs widget and the owner has the ability to create a new entry or view previous entries.