Non-existent filter value turns Flexmonster to infinite loop

Resolved
Lukas Navratil asked on May 18, 2017

Hi all,
I'm using Flexmonster with Flexmonster accelerator connected to SSAS cube. Both in version 2.315. We have some saved reports which can be executed against few different cube instances with different data.
Now, when I define e.g. page with filter

"pages": [
{
"uniqueName": "[BusinessPeriod]",
"levelName": "[BusinessPeriod].[Year]",
"caption": "Year",
"sort": "unsorted",
"filter": {
"negation": false,
"members": [
"[BusinessPeriod].[All].[2009]"
]
}
}
]

I'm not able to open the report on cubes which does not contain any data for filtered value, in this case 2009. Flexmonster is stuck, it shows that it is loading members for Year dimension - http://imgur.com/a/pestS
When I open the network monitor in the browser, I can see that Flexmonster is querying the server in an infinite loop. The requests look like:

"method": "POST",
"url": "http://172.17.16.81:50005/FlexmonsterProxy/DiscoverMembers",
"httpVersion": "HTTP/1.1",
"headers": [
...
],
"queryString": [],
"cookies": [],
"headersSize": 511,
"bodySize": 524,
"postData": {
"mimeType": "application/json; charset=UTF-8",
"text": "{\"catalog\":\"VistaBI\",\"cubeUniqueName\":\"Box Office Summary\",\"subquery\":\"\",\"hierarchyUniqueName\":\"[BusinessPeriod]\",\"properties\":\"\",\"memberUniqueName\":\"\",\"allMemberName\":\"[BusinessPeriod].[All]\",\"hasAllMember\":true,\"loadAll\":false,\"searchPhrase\":\"\",\"chunkIndex\":595,\"ascendants\":\"[BusinessPeriod].[All].[2009]\",\"siblings\":\"\",\"activeLevel\":\"[BusinessPeriod].[Year]\",\"credentials\":null,\"sessionId\":63629324975240,\"customData\":\"\",\"localeIdentifier\":\"\",\"effectiveUserName\":\"\",\"roles\":\"\",\"signature\":\"BR1tPcsn0Y0mGgqPLk2J/JTrdns=\"}"
}

And the response is always the same:

{"error":null,"data":{"all":0,"count":0,"members":[]}}

I believe this is wrong behavior and it prevents us to start using Flexmonster. I would expect that the filter is ignored if the value does not exist anymore. Or at least to have option in configuration where you can set this behavior. BTW, this is probably happening on all filters, not just page filters - at least on column filters it is the same.

UPDATE: I found out that it happens probably only for levels of hierarchies that do have any child levels - e.g Year. When you have a filter for non-existent value on the leaf level - e.g. Day - it works as expected: filter is ignored

Regards
Lukas Navratil

7 answers

Public
Tanya Gryshko Tanya Gryshko Flexmonster May 19, 2017

Hello Lukas,
Thank you for reporting the issue. We were not able to reproduce it on our side. Could you please provide us the access to your msmdpump.dll or make the backup of the cube? This would greatly help us to reproduce the problem on our side.
Regards,
Tanya

Public
Lukas Navratil May 21, 2017

Hello Tanya,
I'm afraid that access to msmdpump.dll will not help you, since this issue happen only when I'm using accelerator. I have tried access with msmdpump and it is working, I have the issue only when using accelerator. I will try to prepare for you some cube where you will be able to reproduce it and I will send it to you soon.
Regards
Lukas

Public
Lukas Navratil May 22, 2017

Hello Tanya,
sorry for the delay with sending the cube. Please follow these steps how to reproduce the issue:

  1. Download Adventure Works cube backup from this link - https://msftdbprodsamples.codeplex.com/downloads/get/461461
  2. Restore the cube to your SSAS instance, add new role that you can access the cube and modify dataSource section in my files if needed.
  3. Load report adventureworks.broken.json that is attached to this message. Now you should see just spinning progress wheel and in Network monitor you can see all the requests that Flexmonster sends to accelerator.

I have also attached the adventureworks.working.json report that is working. I have created this report normally from Flexmonster GUI. The only change I did when I was producing the report that is broken was that I have manually changed

"[Date].[Calendar].[Calendar Year].&[2005]"

to 

"[Date].[Calendar].[Calendar Year].&[2001]"

And since there are no data in dimension for year 2001, it goes to infinite loop when it tries to load available quarters, months etc. for year 2001.
I have also attached the report adventureworks.datapump.json which is the same as adventureworks.broken.json just is not using the accelerator and you can try that Flexmonster loads this report correctly and the non-existent filter is ignored (=all data are loaded).
I hope you are able to reproduce it now, do not hesitate to contact me know if not.
EDIT: I'm not sure if the attachments were uploaded successfully, if not, you can download them here.

Regards
Lukas

Public
Iryna Kulchytska Iryna Kulchytska Flexmonster May 24, 2017

Hi Lukas,
 
Thank you very much for the detailed description of the issue. We have reproduced it on our side and it will be fixed in the next minor release 2.317 (ETA - June 06).
 
Will this work for you?
 
Kind regards,
Iryna

Public
Lukas Navratil May 24, 2017

Hi Irina,
Thank you for your message. Yes, it is fine. BTW we have found two other minor issues yesterday, I will create new threads soon 🙂
Kind regards
Lukas

Public
Tanya Gryshko Tanya Gryshko Flexmonster June 7, 2017

Hello Lukas,
I am glad to inform you that the minor release 2.317 is available for download now. Freezing while filtering non-existent member was fixed.
You are welcome to update the component.
Regards,
Tanya

Public
Lukas Navratil June 7, 2017

Hello Tanya,
Thank you, I have tested the new version and it works! Good job whole team.
Regards
Lukas

Please login or Register to Submit Answer