<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="http://www.codeplex.com/rss.xsl"?><rss version="2.0"><channel><title>openPDC</title><link>http://openpdc.codeplex.com/Project/ProjectRss.aspx</link><description>The openPDC is a complete set of applications for processing streaming time-series data in real-time. Measured data is gathered with GPS-time from multiple input sources, time-sorted and provided t...</description><item><title>Source code checked in, #42564</title><link>http://openpdc.codeplex.com/SourceControl/changeset/view/42564</link><description>Synchrophasor&amp;#58; Version change for build Synchrophasor_v1.1.18.42559.</description><author>ritchiecarroll</author><pubDate>Fri, 19 Mar 2010 04:01:33 GMT</pubDate><guid isPermaLink="false">Source code checked in, #42564 20100319040133A</guid></item><item><title>New Post: bugs in openPDC</title><link>http://openpdc.codeplex.com/Thread/View.aspx?ThreadId=204867</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;first, I am sorry to reply to you so late. My laptop is broken, making me unable to receive e-mails for a couple days.&lt;/p&gt;
&lt;p&gt;and thank you very much for your praise. We should thank you and the whole openPDC team to make openPDC such a wonderful achievement, as well as make it open source, to help a lot more people.&lt;/p&gt;
&lt;p&gt;But for &amp;quot;PhasorDataConcentratorBase&amp;quot;, I still think that there is race condition. I have noticed that the derived class doesn't use the dictionary of the frame, so I agree with you that there is no race condition on that dictionary, so there is no need to lock and unlock the dictionary.&amp;nbsp; But the frame itself is also shared by multiple threads:&lt;/p&gt;
&lt;p&gt;1. if there are multiple input adapters receiving data from different devices, each input adaper will run on its own thread, and try to put its newly-received measurements into that frame, so there is race condition among multiple &amp;quot;writers&amp;quot;.&lt;/p&gt;
&lt;p&gt;2. there is another thread to call &amp;quot;PublishFrame&amp;quot;. &amp;quot;PublishFrame&amp;quot; will read the content of a frame and publish it out, so there is race condition among the only one &amp;quot;reader&amp;quot; and multiple &amp;quot;writers&amp;quot;.&lt;/p&gt;
&lt;p&gt;so, the race condition doesn't occur on that dictionary, but on the other collections within the frame, such as the &amp;quot;PhasorValueCollection&amp;quot;, &amp;quot;DigitalValueCollection&amp;quot;, &amp;quot;AnalogValueCollection&amp;quot;. these collections are all shared among multiple threads, so synchronization is still needed, in my opinion.&lt;/p&gt;
&lt;p&gt;I am trying to extend openPDC. In our system, the data for openPDC to process is not PMU measurements, but substation level&amp;nbsp;SE result. And the data will be transmitted by GridStat middleware. I hope my work can make contributions to openPDC later.&lt;/p&gt;
&lt;p&gt;Thanks.&lt;/p&gt;&lt;/div&gt;</description><author>cheka</author><pubDate>Fri, 19 Mar 2010 00:53:32 GMT</pubDate><guid isPermaLink="false">New Post: bugs in openPDC 20100319125332A</guid></item><item><title>New Post: bugs in openPDC</title><link>http://openpdc.codeplex.com/Thread/View.aspx?ThreadId=204867</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Hello Pinal:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;first I am sorry to reply to you so late. there is some problems with my laptop, which make me unable to access the internet for a couple of days.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Thank you very much for the information you provided. Based on those information, I will re-write some of my codes, to post multiple asynchronous IO operation at the same time, to achieve a higher concurrency.&lt;/p&gt;&lt;/div&gt;</description><author>cheka</author><pubDate>Fri, 19 Mar 2010 00:29:58 GMT</pubDate><guid isPermaLink="false">New Post: bugs in openPDC 20100319122958A</guid></item><item><title>Source code checked in, #42559</title><link>http://openpdc.codeplex.com/SourceControl/changeset/view/42559</link><description>Synchrophasor&amp;#58; Updated PMU Connection Tester to accept IPv6, DNS and UDP Multicast addresses - forced IPv4 is now an optional application setting.</description><author>ritchiecarroll</author><pubDate>Thu, 18 Mar 2010 19:15:35 GMT</pubDate><guid isPermaLink="false">Source code checked in, #42559 20100318071535P</guid></item><item><title>Source code checked in, #42549</title><link>http://openpdc.codeplex.com/SourceControl/changeset/view/42549</link><description>Synchrophasor&amp;#58; openPDCManager - Added Device Measurements screen with real-time measurement values which refreshes every 30 seconds.</description><author>mthakkar</author><pubDate>Thu, 18 Mar 2010 15:05:33 GMT</pubDate><guid isPermaLink="false">Source code checked in, #42549 20100318030533P</guid></item><item><title>Source code checked in, #42546</title><link>http://openpdc.codeplex.com/SourceControl/changeset/view/42546</link><description>Synchrophasor&amp;#58; Version change for build Synchrophasor_v1.1.17.42526.</description><author>ritchiecarroll</author><pubDate>Thu, 18 Mar 2010 04:02:00 GMT</pubDate><guid isPermaLink="false">Source code checked in, #42546 20100318040200A</guid></item><item><title>Source code checked in, #42545</title><link>http://openpdc.codeplex.com/SourceControl/changeset/view/42545</link><description>Historian&amp;#58; Version change for build Historian_v1.1.7.42533.</description><author>ritchiecarroll</author><pubDate>Thu, 18 Mar 2010 04:01:34 GMT</pubDate><guid isPermaLink="false">Source code checked in, #42545 20100318040134A</guid></item><item><title>Source code checked in, #42533</title><link>http://openpdc.codeplex.com/SourceControl/changeset/view/42533</link><description>Historian&amp;#58; Added File and Serial output options to Historian Playback Utility.</description><author>pinalpatel</author><pubDate>Wed, 17 Mar 2010 18:08:06 GMT</pubDate><guid isPermaLink="false">Source code checked in, #42533 20100317060806P</guid></item><item><title>Source code checked in, #42530</title><link>http://openpdc.codeplex.com/SourceControl/changeset/view/42530</link><description>Framework&amp;#58; Version change for build Framework_v1.1.11.42529.</description><author>pinalpatel</author><pubDate>Wed, 17 Mar 2010 17:12:42 GMT</pubDate><guid isPermaLink="false">Source code checked in, #42530 20100317051242P</guid></item><item><title>Source code checked in, #42529</title><link>http://openpdc.codeplex.com/SourceControl/changeset/view/42529</link><description>Framework&amp;#58; Version change for build Framework_v1.1.10.42357.</description><author>pinalpatel</author><pubDate>Wed, 17 Mar 2010 16:50:47 GMT</pubDate><guid isPermaLink="false">Source code checked in, #42529 20100317045047P</guid></item><item><title>Source code checked in, #42526</title><link>http://openpdc.codeplex.com/SourceControl/changeset/view/42526</link><description>Synchrophasor&amp;#58;Automatically copy EventDetection.dll to output directory</description><author>ryanzuo</author><pubDate>Wed, 17 Mar 2010 13:35:25 GMT</pubDate><guid isPermaLink="false">Source code checked in, #42526 20100317013525P</guid></item><item><title>Source code checked in, #42490</title><link>http://openpdc.codeplex.com/SourceControl/changeset/view/42490</link><description>updated archive parsing and manipulation code</description><author>jpatterson</author><pubDate>Tue, 16 Mar 2010 18:50:27 GMT</pubDate><guid isPermaLink="false">Source code checked in, #42490 20100316065027P</guid></item><item><title>New Post: bugs in openPDC</title><link>http://openpdc.codeplex.com/Thread/View.aspx?ThreadId=204867</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;&lt;span style="color:#1f497d"&gt;First, we are very honored to have one of Anjan&amp;rsquo;s students reviewing the code. We have a tremendous respect for Dr. Bose, Dr. Bakken as well as Dr. Venkatasubramanian (and WSU as a whole) all of whom have had an instrumental influence on NASPI and synchrophasor technologies as a whole. We also would like to thank you for taking time to evaluate the system - in the end people like yourself will be the one&amp;rsquo;s adding the most value to the system by finding and helping to correct issues.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;1. openPDC has some problem in supporting IPV6. &lt;/strong&gt;&lt;strong&gt;&lt;br&gt;&lt;br&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;We have successfully deployed the openPDC in both IPv6 and IPv4 environments - Pinal has already weighed in on this issue (above). If his suggested configuration settings do not resolve the issue for you please let us know.&amp;nbsp; Thanks!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;2. there is race condition in &amp;quot;PhasorDataConcentratorBase&amp;quot;&lt;/strong&gt;&lt;strong&gt;&lt;br&gt;&lt;br&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;Very observant! I am the author so I should explain my behavioral &amp;ldquo;deviation&amp;rdquo; :) The base class is designed around the concept of a &amp;ldquo;frame&amp;rdquo; of measurements (implemented as an abstract interface, &amp;ldquo;IFrame&amp;rdquo;, containing a &amp;ldquo;dictionary&amp;rdquo; of measurement values). This frame becomes the object that holds all time-aligned measurements. As such this dictionary is used for thread synchronization so that the base class can safely stop sorting measurements into the frame before offering it to the consumer for publication. This allows the consumer to use the frame without worry about locking and further modification to the frame by other threads.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;The area of code you noticed in &amp;ldquo;PhasorDataConcentratorBase&amp;rdquo; is a derived class designed to construct a frame of synchrophasor data in a standard protocol from these constituent measurements. The important thing to note is that although the synchrophasor frame implements the &amp;ldquo;IFrame&amp;rdquo; interface as is required by &amp;ldquo;ConcentratorBase&amp;rdquo; - it doesn&amp;rsquo;t actually use this dictionary of measurements. It instead handles assignment of measurements to its frame as a &amp;ldquo;special case&amp;rdquo; since the measurements are destined for &amp;ldquo;special locations &amp;ldquo;within the frame - not simply maintained as a keyed-list. As a result, I chose not to lock the unused dictionary as an optimization - especially given that processing is already limited to 1 / fps (typically 1/30th or 1/60th of a second). By not using the dictionary the race condition will be avoided even if its not locked in the &amp;ldquo;AssignMeasurementToFrame&amp;rdquo; override. It&amp;rsquo;s rather impressive that you actually were able to dig deep enough to find this however! :)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. there is some bug when generating CRC number for IEEE 1344 protocol.&lt;/strong&gt;&lt;strong&gt;&lt;br&gt;&lt;br&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;The phasor protocol library is written to be completely &amp;ldquo;bi-directional&amp;rdquo; - that is, not only can it &amp;ldquo;parse&amp;rdquo; data from the synchrophasor protocols but it can also &amp;ldquo;generate&amp;rdquo; data in this format as well. In your above example you are using the buffer as provided for &amp;ldquo;parsing&amp;rdquo; to validate the CRC - you are then also using the &amp;ldquo;generation&amp;rdquo; properties (i.e., this.BinaryImage and this.BinaryLength) to create an image and then validate the same CRC. However, simply because the protocols were designed to be bi-directional, not all of them have been thoroughly tested. Typically we only use either IEEE C37.118 or BPA PDCstream in &amp;ldquo;generate&amp;rdquo; mode - looks like you found an issue here! The problem is that the generation method in the &amp;ldquo;ConfigurationFrame&amp;rdquo; of IEEE 1344 was coded using CRC16 and the parsing is using CRC-CCITT (which is done correctly) - this has been corrected as of change number 42489. Thanks for finding this!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. Asynchronous Sending Problems&lt;/strong&gt;&lt;strong&gt;&lt;br&gt;&lt;br&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;Hoping that Pinal&amp;rsquo;s answer to this query (above) has resolved this issue. To summarize, only thing happening asynchronously here is egress from &amp;ldquo;PublishFrame&amp;rdquo; method. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5. Extension Problem&lt;/strong&gt;&lt;strong&gt;&lt;br&gt;&lt;br&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;Reusability of the synchrophasor parsing classes is open and accomplished through deriving from Stream which means data can from any source. However, like you mention the class &amp;ldquo;MultiProtcolFrameParser&amp;rdquo; is a closed by using the protocol enumeration. My only defense is that this particular class exists only to &lt;em&gt;simplify&lt;/em&gt; consumption of phasor protocols by combining typical network layer and transports into one class using enumerations - as well as to provide a good example on how to use these libraries. Using this class is not required to use the phasor protocols, but it does mean the consumer needs manage their own transport layer as well as creating the protocol specific parsing classes to do otherwise.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;That being said I am excited that you are considering integrating GridStat as a communications layer into the openPDC. Since GridStat is not really a phasor protocol in itself (i.e., it can &amp;ldquo;carry&amp;rdquo; phasor data but is not a standard phasor protocol) - I would not recommend extending the phasor protocol library to accommodate the GridStat system. Instead, I recommend writing one or more &amp;ldquo;extensions&amp;rdquo; to the openPDC. Extending the openPDC is handled by directly extending &amp;ldquo;InputAdapterBase&amp;rdquo; (to map incoming data to measurements), &amp;ldquo;ActionAdapterBase&amp;rdquo; (to time-align and process desired measurements) or &amp;ldquo;OutputAdapterBase&amp;rdquo; (to queue measurements for archival) - see http://openpdc.codeplex.com/wikipage?title=Custom%20Adapter&amp;amp;referringTitle=Documentation.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;You could simply writing a &amp;ldquo;GridStatInputAdapter&amp;rdquo; to allow the openPDC to receive time-series style data from GridStat as well as a &amp;ldquo;GridStateOutpuAdapter&amp;rdquo; to allow the openPDC to publish time-series data to GridStat. I think this would accomplish the &amp;ldquo;integration&amp;rdquo; mission and both adapters could live in a single assembly (e.g., GridStatAdapters.dll). The openPDC Synchrophasor source code includes a &amp;ldquo;MySQLAdapters&amp;rdquo; project which can be used as a template of how to write an InputAdapter and an OutputAdapter &amp;nbsp;that would operated in a similar fashion.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;Thanks!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;J. Ritchie Carroll&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</description><author>ritchiecarroll</author><pubDate>Tue, 16 Mar 2010 18:41:27 GMT</pubDate><guid isPermaLink="false">New Post: bugs in openPDC 20100316064127P</guid></item><item><title>Source code checked in, #42489</title><link>http://openpdc.codeplex.com/SourceControl/changeset/view/42489</link><description>Synchrophasor&amp;#58; Corrected IEEE 1344 configuration frame generation code to use CRC-CCITT instead of CRC16.</description><author>ritchiecarroll</author><pubDate>Tue, 16 Mar 2010 18:10:20 GMT</pubDate><guid isPermaLink="false">Source code checked in, #42489 20100316061020P</guid></item><item><title>Source code checked in, #42488</title><link>http://openpdc.codeplex.com/SourceControl/changeset/view/42488</link><description>Synchrophasor&amp;#58; Data - Modified MeasurementDetail view to retrieve NodeID from Historian table instead of Device table.</description><author>mthakkar</author><pubDate>Tue, 16 Mar 2010 18:09:06 GMT</pubDate><guid isPermaLink="false">Source code checked in, #42488 20100316060906P</guid></item><item><title>New Post: bugs in openPDC</title><link>http://openpdc.codeplex.com/Thread/View.aspx?ThreadId=204867</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Hi Chuanlin,&lt;/p&gt;
&lt;p&gt;I haven't seen anything officially published by Microsoft, but here's a couple of link about asynchronous I/O in .NET and completion ports:&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://download.sharethispoint.com/Day of Threading - Part 3.pdf"&gt;Wintellect Slidedeck&lt;/a&gt;&amp;nbsp;- These guys train Microsoft new hires, so very credible.&lt;br&gt;- &lt;a href="http://www.drdobbs.com/windows/184405796;jsessionid=3ATPZLA2JZZBJQE1GHPSKHWATMY32JVN?queryText=Socket+Asynchronous+Calls"&gt;Dr. Dobb's Article&lt;/a&gt;&amp;nbsp;- Internal .NET implementation has changed somewhat, but the overall idea stays the same.&lt;/p&gt;
&lt;p&gt;Another thing you can do for yourself is to disassemble mscorlib using &lt;a href="http://www.red-gate.com/products/reflector/"&gt;.NET Reflector&lt;/a&gt; and see how Socket class is implemented; you will see that all asynchronous socket operations make a call to Socket.BindToCompletionPort() internal method.&lt;/p&gt;
&lt;p&gt;- Pinal&lt;/p&gt;&lt;/div&gt;</description><author>pinalpatel</author><pubDate>Tue, 16 Mar 2010 17:29:02 GMT</pubDate><guid isPermaLink="false">New Post: bugs in openPDC 20100316052902P</guid></item><item><title>New Post: Manager problems</title><link>http://openpdc.codeplex.com/Thread/View.aspx?ThreadId=204677</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Matt,&lt;/p&gt;
&lt;p&gt;One more suggestion&amp;nbsp;for the error message &amp;quot;Failed to Retrieve Node&amp;quot;. Please modify web.config file for openPDCManagerServices to set includeExceptionDetailInFaults to true. Please see below. This will return exact detail of the error message. Please let me know if this helps or not.&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;serviceBehaviors&amp;gt;&lt;br&gt;&amp;nbsp;&amp;lt;behavior name=&amp;quot;openPDCManager.Services.Service.PhasorDataServiceBehavior&amp;quot;&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;lt;serviceMetadata httpGetEnabled=&amp;quot;true&amp;quot;/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000"&gt;&amp;lt;serviceDebug includeExceptionDetailInFaults=&amp;quot;true&amp;quot;/&amp;gt;&lt;/span&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;lt;serviceThrottling maxConcurrentCalls=&amp;quot;64&amp;quot; maxConcurrentSessions=&amp;quot;50&amp;quot; maxConcurrentInstances=&amp;quot;1&amp;quot;/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;lt;/behavior&amp;gt;&lt;br&gt;&amp;lt;/serviceBehaviors&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#000000"&gt;Thank you,&lt;br&gt;Mehul Thakkar&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</description><author>mthakkar</author><pubDate>Tue, 16 Mar 2010 16:28:42 GMT</pubDate><guid isPermaLink="false">New Post: Manager problems 20100316042842P</guid></item><item><title>New Post: Manager problems</title><link>http://openpdc.codeplex.com/Thread/View.aspx?ThreadId=204677</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Matt,&lt;/p&gt;
&lt;p&gt;Did you run SampleDataSet.sql after setting up mySQL database? If not, then would you please try running this script and see if openPDCManager works. Please let me know.&lt;/p&gt;
&lt;p&gt;Thanks,&lt;br&gt;Mehul Thakkar&lt;/p&gt;&lt;/div&gt;</description><author>mthakkar</author><pubDate>Tue, 16 Mar 2010 14:01:08 GMT</pubDate><guid isPermaLink="false">New Post: Manager problems 20100316020108P</guid></item><item><title>New Post: bugs in openPDC</title><link>http://openpdc.codeplex.com/Thread/View.aspx?ThreadId=204867</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Hi Pinalpatel:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I am very glad to receive your reply.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I will try your method to solve the IPV6 problem. But I still think there is some other problems. The strangest thing is that openPDCConsole can connect with openPDC successfully at first, but a few days later, it cannot. I am sure that I didn't modify any source code or configuration during that period of time, so I guess there is conflict between openPDC and some windows updates.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Another thing I am very interested in is the &amp;quot;IO Completion Port&amp;quot; problem. I have used IOCP before. When I switched to C#, I also try to find how to use IOCP in c#. But all the information I get from the web told me that the only way to use IOCP in .NET is to call the managed codes written in c++, and I find no evidence to relae the asynchronous socket API in c# with IOCP, even in MSDN.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Would you please tell me where you find the information that the asynchronous socket API in c# were internally implemented&amp;nbsp;with IOCP, and I want to know more technical details. If it is true, I am afraid some parts of my program need to be re-written, to achieve a higher concurrency.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Thank you.&lt;/p&gt;&lt;/div&gt;</description><author>cheka</author><pubDate>Tue, 16 Mar 2010 03:18:23 GMT</pubDate><guid isPermaLink="false">New Post: bugs in openPDC 20100316031823A</guid></item><item><title>Source code checked in, #42468</title><link>http://openpdc.codeplex.com/SourceControl/changeset/view/42468</link><description>Synchrophasor&amp;#58; Added auto-reset of device statistics when reconnected - also added adpater commands to do the same manually on-demand.</description><author>ritchiecarroll</author><pubDate>Mon, 15 Mar 2010 18:28:51 GMT</pubDate><guid isPermaLink="false">Source code checked in, #42468 20100315062851P</guid></item></channel></rss>