2sic / 2sxc

DNN + 2sxc = #DNNCMS - This tool helps web designers and developers prepare great looking content in DNN (DotNetNuke). It's like mixing DNN with Umbraco and Drupal :)
http://2sxc.org
MIT License
145 stars 40 forks source link

Error on saving any content entity #1293

Closed TwoHeadsBrewing closed 7 years ago

TwoHeadsBrewing commented 7 years ago

I'm submitting a ... [x] bug report => search github for a similar issue before submitting

...about [x] edit experience / UI

Current behavior After upgrading to 2SXC 9.5 from 8.12, I can no longer edit any content items. I get an error that says, "Had an error talking to server (status 400). Message: Bad Request Detail: Error getting List of Stream Stream Name: Default DataSource Name: EntityTypeFilter"

Expected behavior Edit item, save and successfully close.

Minimal reproduction of the problem with instructions Edit any item and then click the "Save" button.

What is the motivation / use case for changing the behavior? N/A

Please tell us about your environment: Amazon AWS EC2 instance running Windows Server 2012 R2

Error information from the log: AbsoluteURL:/desktopmodules/2sxc/api/eav/entities/savemany DefaultDataProvider:DotNetNuke.Data.SqlDataProvider, DotNetNuke ExceptionGUID:05ea58f3-37e8-4abc-816e-bbf4da180b8c AssemblyVersion: PortalId:-1 UserId:-1 TabId:-1 RawUrl: Referrer: UserAgent: ExceptionHash:FkYYsBX5J2/Eeuph6B78Wg== Message:Error getting List of Stream. Stream Name: Default DataSource Name: EntityTypeFilter StackTrace: at ToSic.Eav.DataSources.DataStream.get_LightList() in C:\Projects\eav-server\ToSic.Eav.DataSources\DataStream.cs:line 158 at ToSic.Eav.DataSources.DataStream.get_List() in C:\Projects\eav-server\ToSic.Eav.DataSources\DataStream.cs:line 83 at ToSic.SexyContent.ContentGroupManager.GetContentGroup(Guid contentGroupGuid) in C:\Projects\2SexyContent\Web\DesktopModules\ToSIC_SexyContent\SexyContent\ContentGroupManager.cs:line 46 at ToSic.SexyContent.ContentGroupManager.GetContentGroupOrGeneratePreview(Guid groupGuid, Guid previewTemplateGuid) in C:\Projects\2SexyContent\Web\DesktopModules\ToSIC_SexyContent\SexyContent\ContentGroupManager.cs:line 141 at ToSic.SexyContent.ContentGroupManager.GetContentGroupForModule(Int32 moduleId, Int32 tabId) in C:\Projects\2SexyContent\Web\DesktopModules\ToSIC_SexyContent\SexyContent\ContentGroupManager.cs:line 135 at ToSic.SexyContent.ContentBlocks.ModuleContentBlock..ctor(ModuleInfo moduleInfo, IEnumerable1 overrideParams) in C:\Projects\2SexyContent\Web\DesktopModules\ToSIC_SexyContent\SexyContent\ContentBlocks\ModuleContentBlock.cs:line 58 at ToSic.SexyContent.WebApi.Helpers.GetSxcOfApiRequest(HttpRequestMessage request, Boolean allowNoContextFound) in C:\Projects\2SexyContent\Web\DesktopModules\ToSIC_SexyContent\Sxc WebApi\Helpers.cs:line 45 at ToSic.SexyContent.WebApi.SxcApiController.get_AppAndDataHelpers() in C:\Projects\2SexyContent\Web\DesktopModules\ToSIC_SexyContent\Sxc WebApi\SxcApiController.cs:line 24 at ToSic.SexyContent.WebApi.EavApiProxies.EntitiesController.SaveMany(Int32 appId, List1 items, Boolean partOfPage) in C:\Projects\2SexyContent\Web\DesktopModules\ToSIC_SexyContent\Sxc WebApi\EavApiProxies\EntitiesController.cs:line 118 at lambda_method(Closure , Object , Object[] ) at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>cDisplayClass10.b9(Object instance, Object[] methodParameters) at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary2 arguments, CancellationToken cancellationToken) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Tracing.ITraceWriterExtensions.d__181.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter1.GetResult() at System.Web.Http.Controllers.ApiControllerActionInvoker.d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Tracing.ITraceWriterExtensions.d__181.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter1.GetResult() at System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter1.GetResult() at System.Web.Http.Filters.AuthorizationFilterAttribute.d2.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Web.Http.Filters.AuthorizationFilterAttribute.d2.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter1.GetResult() at System.Web.Http.Filters.AuthorizationFilterAttribute.d__2.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter1.GetResult() at System.Web.Http.Filters.AuthorizationFilterAttribute.d2.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Web.Http.Controllers.ExceptionFilterResult.d0.MoveNext() InnerMessage:Error getting List of Stream. Stream Name: Default DataSource Name: PublishingFilter InnerStackTrace: at ToSic.Eav.DataSources.DataStream.get_LightList() in C:\Projects\eav-server\ToSic.Eav.DataSources\DataStream.cs:line 158 at ToSic.Eav.DataSources.EntityTypeFilter.GetList() in C:\Projects\eav-server\ToSic.Eav.DataSources\EntityTypeFilter.cs:line 59 at ToSic.Eav.DataSources.DataStream.get_LightList() in C:\Projects\eav-server\ToSic.Eav.DataSources\DataStream.cs:line 136 Source:ToSic.Eav.DataSources FileName: FileLineNumber:0 FileColumnNumber:0 Method: Server Name: WIN-VGD4FFTN042

TwoHeadsBrewing commented 7 years ago

Also, I just noticed that on any content edit form there is only the options to "Hide this item" or "Hide changes as draft". There is no option to "Show this item" as there was prior to the upgrade to 9.5.

iJungleboy commented 7 years ago

Are you using dnn or evoq? because 9.5 has a new feature which kicks-in when the page has a publish-workflow...

TwoHeadsBrewing commented 7 years ago

I'm using Evoq 8.4.1

iJungleboy commented 7 years ago

2sxc 9.5 "respects" Evoq page workflow settings and thereby forces the user to draft-save, till they publish the page. Evoq is notified (by 2sxc) of changes, so the page will then offer a publish button.

Is this a problem, or simply a surprise?

TwoHeadsBrewing commented 7 years ago

The problem is that the item is never saved and an error is thrown. The user cannot change anything.

Workflow page setting is currently set to "Direct Publish"

iJungleboy commented 7 years ago

We may already have a solution, but I'm not sure. I changed some minor details which apply to this, but we haven't released 9.5.1 yet as we need one more feature. I'll give you a pre-release here, could you give it a quick try? 2sic_2SexyContent_09.05.01_Install.zip

TwoHeadsBrewing commented 7 years ago

I applied this update, and it did not solve the issue. When I look into the debug window, each of these data entities "IsPublished" is set to "false". However, in the database this value is "true".

iJungleboy commented 7 years ago

The DB state is normal - as the draft-item technically has another number in the DB. It's just provided internally as the same id, one draft, the other published.

TwoHeadsBrewing commented 7 years ago

What do you recommend as a solution? Is it possible to roll back to a previous version of 2sxc?

iJungleboy commented 7 years ago

Rollback is very easy. Just go to the extensions and modify the version number of content & app to be the version you want, then re-install that version.

iJungleboy commented 7 years ago

Since I cannot just reproduce the issue - do you have any more idea what could be the cause?

TwoHeadsBrewing commented 7 years ago

Is there any prior version that would be a good choice? And are there any incompatible versions since version 8.12 I should avoid?

iJungleboy commented 7 years ago

From our point of view 9.5 should be the most stable of all 9, but we have build the solution that you should also be able to roll back to 8.12 without problems. So of course it would be better if we could solve the problem :)

As I'm sitting at the PC right now, could I maybe have a brief admin/host access to the system and have a look? you could send it to info 2sxc org

TwoHeadsBrewing commented 7 years ago

I'm attempting a rollback to 8.12 as a quick fix, but if that doesn't work I will forward you login information on our testing server. Thanks for you help thus far!

EDIT: Login information has been forwarded via email

TwoHeadsBrewing commented 7 years ago

Just an FYI, rolling back to Pre-Release 3 of 9.5 and then back to 8.12 did not solve the problem. The error is still thrown and there is no option to "Show this item" by the save button on any data entity.

iJungleboy commented 7 years ago

this is strange. could you verify that you rolled back? check the versions of the DLLs and also in the admin-dialogs, mouse-over the pi-symbol in the corner - it should show you the version it's running.

TwoHeadsBrewing commented 7 years ago

It is still showing version 9.5.1. However, I did re-install the older version. I re-set the version to 8.0.0 and then performed an install of 8.1.2

TwoHeadsBrewing commented 7 years ago

Another piece of information: When I attempt to edit the content, I will get the error. After that happens there is a "Draft" created in the page history even though the change was not successfully made. I've also found some pages that will allow me to edit, but only save as a hidden draft. I have to click the Edit button, then I can click the "Publish" button and the change will be applied.

I currently have each page/tab Workflow set to "Direct Publish". So shouldn't 2SXC skip any subroutines that have to do with drafts or versioning?

TwoHeadsBrewing commented 7 years ago

This is really a big issue for us. We have this tool in production on 125 live sites, and at this point we are either not able to save, or only able to "Save as draft". Is there any update on this, or on a method to roll back to a previous version of 2sxc?

iJungleboy commented 7 years ago

To your direct-publish: no, at leatst by definition 2sxc should create a version all the time - Evoq creates a new version of the page even with direct publish. This allows evoq users to edit a page, and then "release" it as a larger chunk. that's how text-html does it.

To your; could we disable this - ATM there is no "switch" that would do this.

To your: downgrade: the previously described method should work, but if it fails, you can always just replace the DLLs and the whole desktopmodules/tosic-sexycontent folder, and it should have the same effecct as a downgrade.

To get your issue fixed we need to know more about what's happening - but of course we can't do that once you downgrade. Wanna give us access?

iJungleboy commented 7 years ago

Turns out that it's not really a 2sxc 9.5 issue, the problem was deeper.

For some reason, the data in the DB had the language en-US twice - I presume this happened a long time ago, and was not a problem before because it was ignored. Now it found it, and complains. Here's how I found the duplicate language:

SELECT TOP (1000) [DimensionID]
      ,[Parent]
      ,[Name]
      ,[SystemKey]
      ,[ExternalKey]
      ,[Active]
      ,[ZoneID]
  FROM [dbo].[ToSIC_EAV_Dimensions]
  Where ZoneId = 2 -- the zone-id of the current portal

I got two zones with en-US, one with the id 146, one with 147 Then I checked if any values were attached to these languages. Turns out only one was in use. This is how I checked

SELECT TOP (1000) [ValueID]
      ,[DimensionID]
      ,[ReadOnly]
  FROM [dbo].[ToSIC_EAV_ValuesDimensions]
  Where DimensionId = 146

SELECT TOP (1000) [ValueID]
      ,[DimensionID]
      ,[ReadOnly]
  FROM [dbo].[ToSIC_EAV_ValuesDimensions]
  Where DimensionId = 147

because one wasn't in use, I first test-deleted it using a transaction which I rolled back, since that looked good, I did it again, completing the transaction:

Begin transaction
Delete 
  FROM [dbo].[ToSIC_EAV_Dimensions]
  Where DimensionId = 147

SELECT TOP (1000) [DimensionID]
      ,[Parent]
      ,[Name]
      ,[SystemKey]
      ,[ExternalKey]
      ,[Active]
      ,[ZoneID]
  FROM [dbo].[ToSIC_EAV_Dimensions]
  Where ZoneId = 2

-- Rollback
Commit

Saving then worked again!

Note that I also installed the latest 2sxc 9.5.1 which fixes some more bugs, so your dev system now has newer release. we'll publish it today for everyone, this is what you'll also want on your live system.

TwoHeadsBrewing commented 7 years ago

That is quite an odd issue, thanks for tracking that down. I'd really like to see a revision to the "Drafts" feature, where if the workflow for the page is set to "Direct Publish" it would not require actual publishing of the page. Or, at the very least, if a Save on the content would trigger the "Edit Page" action. That way the user is immediately aware that they need to publish their recent change.

With the current behavior, a user now makes a change to the data, but still needs to click the "Edit" button, and then click the "Publish" button. It works, but it's more clicks for no functionality. I think saving as a draft should only be triggered when the workflow options are set to "Save Draft".