Products

Solutions

Resources

Partners

Community

Blog

About

QA

Ideas Test

New Community Website

Ordinarily, you'd be at the right spot, but we've recently launched a brand new community website... For the community, by the community.

Yay... Take Me to the Community!

Welcome to the DNN Community Forums, your preferred source of online community support for all things related to DNN.
In order to participate you must be a registered DNNizen

HomeHomeUsing DNN Platf...Using DNN Platf...Performance and...Performance and...DNN Failing Under Light Load. Errors Galore. Please Help!DNN Failing Under Light Load. Errors Galore. Please Help!
Previous
 
Next
New Post
12/3/2010 6:12 AM
 
I have tried everything. The errors still appear. If anyone has any more ideas let me know. I have a feeling this has to do with .net 4

Something that makes me curious though is "C:\CCNet_Builds\CE_Development\WorkingDirectory\Library\Providers\SchedulingProviders\DNNScheduler\Scheduler.vb:line 116"

Is that directory supposed to exist on server? I know that doesn't exist now, and I know it's not something I inputted. So why would DNN be trying to access that location?

John
 
New Post
12/3/2010 9:40 AM
 
File reference in your exception stack trace is a reference to the source code line causing the exception. It looks like there is a serious bug in the multithreading logic with the scheduler code. There are 3 methods involved:


Private Shared Sub AddToScheduleInProgress(ByVal objScheduleHistoryItem As ScheduleHistoryItem)
                If Not ScheduleInProgressContains(objScheduleHistoryItem) Then
                    Try
                        objInProgressReadWriteLock.AcquireWriterLock(WriteTimeout)
                        Try
                            If Not ScheduleInProgressContains(objScheduleHistoryItem) Then
                                ' It is safe for this thread to read or write
                                ' from the shared resource.
                                ScheduleInProgress.Add(objScheduleHistoryItem, objScheduleHistoryItem.ScheduleID.ToString)
                                Interlocked.Increment(Writes)
                            End If
                        Finally
                            ' Ensure that the lock is released.
                            objInProgressReadWriteLock.ReleaseWriterLock()
                        End Try
                    Catch ex As ApplicationException
                        ' The writer lock request timed out.
                        Interlocked.Increment(WriterTimeouts)
                        LogException(ex)
                    End Try
                End If
            End Sub



            Private Shared Function ScheduleInProgressContains(ByVal objScheduleHistoryItem As ScheduleHistoryItem) As Boolean
                Dim i As Integer


                For i = 1 To GetScheduleInProgressCount()
                    Dim objScheduleHistoryItem2 As ScheduleHistoryItem = CType(ScheduleInProgress.Item(i), ScheduleHistoryItem)
                    If objScheduleHistoryItem2.ScheduleID = objScheduleHistoryItem.ScheduleID Then
                        Return True
                    End If
                Next
                Return False
            End Function


'''''''''''''''''''''''''''''''''''''''''''''''''''
            'This is a multi-thread safe method that returns
            'the number of items in the collection of 
            'schedule items in progress.  It first obtains a
            'read lock on the ScheduleProgress object.
            '''''''''''''''''''''''''''''''''''''''''''''''''''
            Public Shared Function GetScheduleInProgressCount() As Integer
                Dim intCount As Integer
                Try
                    objInProgressReadWriteLock.AcquireReaderLock(ReadTimeout)
                    Try
                        ' It is safe for this thread to read from
                        ' the shared resource.
                        intCount = ScheduleInProgress.Count
                        Interlocked.Increment(Reads)
                    Finally
                        ' Ensure that the lock is released.
                        objInProgressReadWriteLock.ReleaseReaderLock()
                    End Try
                Catch ex As ApplicationException
                    ' The reader lock request timed out.
                    Interlocked.Increment(ReaderTimeouts)
                End Try
                Return intCount
            End Function

The looping construct in ScheduleInProgressContains() code is not thread safe. The number of schedules in progress may change between the call to GetScheduleInProgressCount() and the ScheduleInProgress.Item(i). The index may become invalid before the code reaches the reference to the Item() collection. The ScheduleInProgressContains() method should acquire a read lock on the collection. It's a bug.

 
New Post
12/3/2010 10:31 AM
 
Lars, would you mind to log the bug in Gemini (support.dotnetnuke.com). Thank you in advance.

Cheers from Germany,
Sebastian Leupold

dnnWerk - The DotNetNuke Experts   German Spoken DotNetNuke User Group

Speed up your DNN Websites with TurboDNN
 
New Post
12/3/2010 12:37 PM
 
Sebastian Leupold wrote:
Lars, would you mind to log the bug in Gemini (support.dotnetnuke.com). Thank you in advance.

http://support.dotnetnuke.com/issue/V...

 
New Post
12/3/2010 2:15 PM
 
great, thanks a lot!

Cheers from Germany,
Sebastian Leupold

dnnWerk - The DotNetNuke Experts   German Spoken DotNetNuke User Group

Speed up your DNN Websites with TurboDNN
 
Previous
 
Next
HomeHomeUsing DNN Platf...Using DNN Platf...Performance and...Performance and...DNN Failing Under Light Load. Errors Galore. Please Help!DNN Failing Under Light Load. Errors Galore. Please Help!


These Forums are dedicated to discussion of DNN Platform and Evoq Solutions.

For the benefit of the community and to protect the integrity of the ecosystem, please observe the following posting guidelines:

  1. No Advertising. This includes promotion of commercial and non-commercial products or services which are not directly related to DNN.
  2. No vendor trolling / poaching. If someone posts about a vendor issue, allow the vendor or other customers to respond. Any post that looks like trolling / poaching will be removed.
  3. Discussion or promotion of DNN Platform product releases under a different brand name are strictly prohibited.
  4. No Flaming or Trolling.
  5. No Profanity, Racism, or Prejudice.
  6. Site Moderators have the final word on approving / removing a thread or post or comment.
  7. English language posting only, please.
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out