Project Server Queue – When is an error not an error?


When it is a status message?

One of the challenges when interacting with an asynchronous queue is error handling.  In a connected application it is easy to interact with the user and tell them what went wrong - but if they have submitted a timesheet and something about it isn't quite right then it is harder to return this information.  In the Manage Queue screen the problem will show as a failed job, and an error will display, but in many cases it isn't really that anything broke - just that something about the timesheet wasn't right.  You may experience this more using the PSI web services directly from a custom application than if you are using the normal timesheet interface, as we are aware of the various states and will not let you try and submit something that isn't going to go through.  However, there could be timing issues that would even make our timesheet jobs fail - and generally this information will display with the timesheet..

If you are developing a timesheet application you should consider the best way to get this information back to the resource through your application - as they may not see their queue jobs if they don't generally use PWA. 

Technorati Tags: Project Server 2007


Comments (9)

  1. Martin Winzig says:

    Nice theory,

    When anyone developing TS application biggest problem is that this PSI methods and datasets aren’t  documented well.

    For examle it’s pretty tricky get information that I’m can’t update timesheet because there is same blocking job is in the Queue:

    if (tsDataSet.Headers[0].ItemArray[tsDataSet.Headers.Columns["TS_QUEUE_JOB_STATUS"].Ordinal].ToString() != "0")

                           {

                               continue;

                           }      

    There isn’t anything about property TS_QUEUE_JOB_STATUS in project server SDK.

    Martin Winzig

  2. I agree we could do better here Martin. Perhaps one approach is to build your application with access to the queue errors for the specific users – as if they are using your own timesheet they may not have ready access to their personal queue jobs that they would see from PWA.

    From the SDK (TimesheetEnum.QueueJobStatus Enumeration)

    Member name   Description

    Failed        Value=2. The job failed.  

    Passed        Value=0. The job passed.  

    Pending       Value=1. The job is pending.  

  3. Ed says:

    Hi Brian,

    I have a special situation on my hands, and hope you can talk/walk me through the pros and cons of my suggested approach.  You can skip past the “intro”, if you like and go straight to the heart of the matter, but part of the “heart” lay in the intro.

    Sometimes (a lot of times?) we run into a problem where we have a job sitting out there in a Failed and Blocking… state.  As bizarre as it may sound, our more savvy users get more upset about our Data Analysis views not being available, than they are about us canceling their failed and blocking jobs.  Stay with me.  I’m focusing on the pain-point.

    If a User submits a job that results in failed in failed and blocking, say on a Friday night or over the weekend, the cube job stacks up behind it.  Unless our support personnel remember to go back few days to find the failed job, it’s difficult for them to discern why the cube isn’t finishing.  I know – I know!  But the diagnosis takes a multitude of steps: 1) Sort the current day’s queue position, both ascending and descending.  Is the queue position greater than 1?  Yes, keep changing the job history parms, sort ascending and descending, until you find queue position 1 (usually the failed and blocking culprit).  Cancel the job.

    Attempt to restart the cube build job.  Watch jobs back up behind it, in hopes it’ll finish soon!  Field numerous (and angry) User phone calls about why they are # 1113 in the queue.  Try to explain you are rebuilding the cube…anger shifts to job being #1113 (not everyone uses [and/or cares] about the “cube”.

    What I’d like to do:

    I have one of two options here.  I can either process the queue on the SQL server side, and use it’s email capabilities to send support personnel a “heads-up” message that there’s a potential problem, or I can automate the solution.

    I was searching for the “automation” solution and could only find some references to the QueueSystem.asmx methods, but no comprehensive solution about how to use them for my need.  I want to take a “failed and blocking…” and simply cancel it, then possibly send support personnel an email message, telling them what had already taken place.  They, in turn, could notify the User and assist in any necessary troubleshooting (e.g. corrupted schedule).

    Had enough ;O)  Your thoughts?

    Thanks,

    Ed

  4. dfknowles says:

    Hi Brian,

    I have a project schedule which will not published.  The publish gets to 93% and then stops.  The following error is returned:

    <?xml version="1.0" encoding="utf-16"?>

    <errinfo>

     <general>

       <class name="">

         <error id="23000" name="ProjectPublishFailure" uid="88285386-4f75-4501-b7e2-99a0ed7ad662" projectuid="f4744dc0-ccca-4065-8ad2-3e42bb8aac22" messagetype="Microsoft.Office.Project.Server.BusinessLayer.QueueMsg.UpdateSRAMessage" messageID="177" stage="" blocking="Block" />

       </class>

       <class name="Queue">

         <error id="26000" name="GeneralQueueJobFailed" uid="bf668b1d-b4eb-4eb0-9cea-14bc06af9ac3" JobUID="10eb89a6-0ee0-49b9-a6aa-c85ffdc96371" ComputerName="WHIMOSS02" GroupType="ProjectPublish" MessageType="UpdateSRAMessage" MessageId="177" Stage="" />

       </class>

     </general>

    </errinfo>

    I reviewed the ULS logs and found the following 5 entries related to this project schedule at the time of the failure:

    1) Node Consistency Message: Exception Updating Summary Resource Assignment. ProjUid=f4744dc0-ccca-4065-8ad2-3e42bb8aac22, ResUid=2b435b56-3f46-4754-8271-7510a5082a0b

    2) PWA:http://pe.malcolmpirnie.com, SSP:InternalSSPNew, User:PIRNIEKNOWLES, PSI:   [QUEUE] System.IndexOutOfRangeException: Index was outside the bounds of the array.     at Microsoft.Office.Project.SvrDataEdit.SvrDataEditSRA.UpdateSummaryResourceAssignments(Guid docGuid, Guid rscGuid, SRATimephasedData sraTimePhasedData, Boolean fProjBeingDeleted)     at Microsoft.Office.Project.SvrDataEdit.SvrDataEditSRA.UpdateSummaryResourceAssignments(Guid docGuid, Guid rscGuid, Boolean fProjBeingDeleted)     at Microsoft.Office.Project.SvrDataEdit.SvrDataEditSRA.ExecuteUpdateSRA(Guid projectUID, Boolean fDelete)     at Microsoft.Office.Project.Server.BusinessLayer.Queue.ProcessPublishMessage.ProcessUpdateSRAMessage(Message msg, Group messageGroup, JobTicket jobTicket, MessageContext mContext)

    3) PWA:http://pe.malcolmpirnie.com, SSP:InternalSSPNew, User:PIRNIEKNOWLES, PSI:   [QUEUE] UpdateSummaryResourceAssignments failed on project f4744dc0-ccca-4065-8ad2-3e42bb8aac22

    4) PWA:http://pe.malcolmpirnie.com, SSP:InternalSSPNew, User:PIRNIEKNOWLES, PSI:   [QUEUE] UpdateSRAMessage

    5) Node Consistency Error: Exception loading actual work contour. assignmentUid = 65407f40-71cc-4a4a-bb21-bd23438247d1.

    I have tried setting the Publish field in the schedule to "No" for all tasks and then published to no avail.  

    Do you have any suggestions on what to try?

    Thanks,

    -Dan

  5. Hi Dan,

    Th failure at 93% is when the summary resource assignment is being written, and appears to indicate a problem, possibly with the specific resource and project/assignment identified in the logs.  One potential workaround is to save the mpp locally, then delete from the server and re-save to the server from the mpp – which will clean things up.  If you have active timesheets referring to this project, or time enetered through PWA then you may wish to contact our support team for extra guidance.

    Best regards,

    Brian.

  6. Armando says:

    Hello Brian,

    I have a Three parter for you.

    first one is that on the Project Web Access timesheets, there is a “Replace Actual with Planned” button. If I check a task and click the button, I am prompted to confirm the replacement of actual values with planned values. However, nothing seems to happen. I’ve tried to Save, Recalculate, and Refresh to see if hours would be copied from Planned to Actual, but still nothing.

    The second is that the Search function in Project Server Help and How-to online window doesn’t work.

    Tried multiple words such as “status”, “calendar”, “project” and every time for each word the search window gives this type of error:

    No results were found matching “status”.

    Suggestions:

    Try a different phrase

    Check your spelling

    The last is that in PWA timesheet are getting duplicate within one timesheet. It only shows up once in the list but once I open it I see 2 complete copies – one right after other. The title line even indicates this – “My Timesheet [2]”.

    Any clues on Why this is happening. Any help would be great.

    Thanks

    Armando

  7. Hi Armando,

    Best to keep questions to the topic of the blog – if only for the reason that I am more likely to answer them :).  The newsgroups or a support incident may be a better place for these types of questions – but quick answers:

    1.  Support indident – looks like a bug

    2.  Interesting – this looks like it goes to WSS help maybe because it is inherited from the base WSS site, so it doesn’t find any Project Server topics.  For the online URL where you can select your Office products and get the "help and how to" stuff go to http://office.microsoft.com/en-us/help/FX100485361033.aspx.

    3.  Again a support call probably needed.  Have timesheets been deleted and re-created?  Or anything strange happened to the user?

    Best regards,

    Brian.

  8. Armando says:

    Thanks Brian will do next time.

  9. Matt BG says:

    I am also experiencing the identical issue (3) above in which Timesheet entries are all being duplicated.  Specifically, some selected users may have 5 tasks…these 5 tasks appear, followed by another headingg and then the same 5 tasks appearing a second time.  This issue does not prevent them from submitting their time into my Timesheet – HOWEVER, it is preventing them from IMPORTing their hours from My Timesheet to My Tasks and thus feeding back into the project plan under "Act. Hours".  Does anyone have any possible resolutions on this?

    Thanks Matt

Skip to main content