You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Cliff Jansen (JIRA)" <qp...@incubator.apache.org> on 2009/10/02 19:39:24 UTC

[jira] Created: (QPID-2128) Transaction support for the WCF channel

Transaction support for the WCF channel
---------------------------------------

                 Key: QPID-2128
                 URL: https://issues.apache.org/jira/browse/QPID-2128
             Project: Qpid
          Issue Type: New Feature
          Components: WCF/C++ Client
    Affects Versions: 0.6
         Environment: Windows
            Reporter: Cliff Jansen


Transaction support is currently lacking from the WCF channel.

As an initial implementation, full distributed transaction support from within .NET is proposed using the dtx AMQP classes and creating a plugin to the MSDTC infrastructure to drive recovery.

Added performance from promotable transaction enlistment is deferred to a later date.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org


[jira] Commented: (QPID-2128) Transaction support for the WCF channel

Posted by "Cliff Jansen (JIRA)" <qp...@incubator.apache.org>.
    [ https://issues.apache.org/jira/browse/QPID-2128?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12782048#action_12782048 ] 

Cliff Jansen commented on QPID-2128:
------------------------------------

I would envision that the DTC plugin module is a DLL that tags along
with the base client libs: qpidcommon.dll and qpidclient.dll in the
base client package.

The user will have to take administrative steps to enable XA
transactions on his Windows machine and register the plugin with the
DTC service (to run in the privileged process space).  These are the
same steps that would be needed for a similar database resource
manager.

Applications that do not use the System.Transactions .NET
functionality will see no change.  Applications that use transactions
will encounter an exception when sending or receiving messages in the
scope of an ambient transaction if they have not configured the plugin
properly.

Cliff

> Transaction support for the WCF channel
> ---------------------------------------
>
>                 Key: QPID-2128
>                 URL: https://issues.apache.org/jira/browse/QPID-2128
>             Project: Qpid
>          Issue Type: New Feature
>          Components: WCF/C++ Client
>    Affects Versions: 0.6
>         Environment: Windows
>            Reporter: Cliff Jansen
>         Attachments: qpid2128_1.patch
>
>
> Transaction support is currently lacking from the WCF channel.
> As an initial implementation, full distributed transaction support from within .NET is proposed using the dtx AMQP classes and creating a plugin to the MSDTC infrastructure to drive recovery.
> Added performance from promotable transaction enlistment is deferred to a later date.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org


[jira] Commented: (QPID-2128) Transaction support for the WCF channel

Posted by "Steve Huston (JIRA)" <qp...@incubator.apache.org>.
    [ https://issues.apache.org/jira/browse/QPID-2128?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12782218#action_12782218 ] 

Steve Huston commented on QPID-2128:
------------------------------------

How should the new files in the patch (DtxResourceManager.*, XaTransaction.*, DtcPlugin.cpp) be handled? There are no vcproj additions or changes that refer to them.

> Transaction support for the WCF channel
> ---------------------------------------
>
>                 Key: QPID-2128
>                 URL: https://issues.apache.org/jira/browse/QPID-2128
>             Project: Qpid
>          Issue Type: New Feature
>          Components: WCF/C++ Client
>    Affects Versions: 0.6
>         Environment: Windows
>            Reporter: Cliff Jansen
>         Attachments: qpid2128_1.patch
>
>
> Transaction support is currently lacking from the WCF channel.
> As an initial implementation, full distributed transaction support from within .NET is proposed using the dtx AMQP classes and creating a plugin to the MSDTC infrastructure to drive recovery.
> Added performance from promotable transaction enlistment is deferred to a later date.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org


[jira] Assigned: (QPID-2128) Transaction support for the WCF channel

Posted by "Steve Huston (JIRA)" <qp...@incubator.apache.org>.
     [ https://issues.apache.org/jira/browse/QPID-2128?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Steve Huston reassigned QPID-2128:
----------------------------------

    Assignee: Steve Huston

> Transaction support for the WCF channel
> ---------------------------------------
>
>                 Key: QPID-2128
>                 URL: https://issues.apache.org/jira/browse/QPID-2128
>             Project: Qpid
>          Issue Type: New Feature
>          Components: WCF/C++ Client
>    Affects Versions: 0.6
>         Environment: Windows
>            Reporter: Cliff Jansen
>            Assignee: Steve Huston
>         Attachments: cppbld.patch, qpid2128_1.patch, wcfbld.patch
>
>
> Transaction support is currently lacking from the WCF channel.
> As an initial implementation, full distributed transaction support from within .NET is proposed using the dtx AMQP classes and creating a plugin to the MSDTC infrastructure to drive recovery.
> Added performance from promotable transaction enlistment is deferred to a later date.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org


[jira] Updated: (QPID-2128) Transaction support for the WCF channel

Posted by "Cliff Jansen (JIRA)" <qp...@incubator.apache.org>.
     [ https://issues.apache.org/jira/browse/QPID-2128?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Cliff Jansen updated QPID-2128:
-------------------------------

    Attachment: wcfbld.patch
                cppbld.patch

Here are sample patches for building.

The cmake side is what I use, but would need an install component too.

The wcf vcproj file should work.  I have a self imposed "TODO" to fix up this
aspect of the build, and integrate with cmake if I can.

> Transaction support for the WCF channel
> ---------------------------------------
>
>                 Key: QPID-2128
>                 URL: https://issues.apache.org/jira/browse/QPID-2128
>             Project: Qpid
>          Issue Type: New Feature
>          Components: WCF/C++ Client
>    Affects Versions: 0.6
>         Environment: Windows
>            Reporter: Cliff Jansen
>         Attachments: cppbld.patch, qpid2128_1.patch, wcfbld.patch
>
>
> Transaction support is currently lacking from the WCF channel.
> As an initial implementation, full distributed transaction support from within .NET is proposed using the dtx AMQP classes and creating a plugin to the MSDTC infrastructure to drive recovery.
> Added performance from promotable transaction enlistment is deferred to a later date.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org


[jira] Commented: (QPID-2128) Transaction support for the WCF channel

Posted by "Carl Trieloff (JIRA)" <qp...@incubator.apache.org>.
    [ https://issues.apache.org/jira/browse/QPID-2128?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12782253#action_12782253 ] 

Carl Trieloff commented on QPID-2128:
-------------------------------------


ok, I don't either, thus the Q :-)

> Transaction support for the WCF channel
> ---------------------------------------
>
>                 Key: QPID-2128
>                 URL: https://issues.apache.org/jira/browse/QPID-2128
>             Project: Qpid
>          Issue Type: New Feature
>          Components: WCF/C++ Client
>    Affects Versions: 0.6
>         Environment: Windows
>            Reporter: Cliff Jansen
>         Attachments: cppbld.patch, qpid2128_1.patch, wcfbld.patch
>
>
> Transaction support is currently lacking from the WCF channel.
> As an initial implementation, full distributed transaction support from within .NET is proposed using the dtx AMQP classes and creating a plugin to the MSDTC infrastructure to drive recovery.
> Added performance from promotable transaction enlistment is deferred to a later date.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org


[jira] Commented: (QPID-2128) Transaction support for the WCF channel

Posted by "Cliff Jansen (JIRA)" <qp...@incubator.apache.org>.
    [ https://issues.apache.org/jira/browse/QPID-2128?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12782252#action_12782252 ] 

Cliff Jansen commented on QPID-2128:
------------------------------------

> is there any reason not to just register it even if not used? 

I have no experience with Microsoft install issues, but I would think
it could be done with "average" registry-related headaches.

The registry key in question was specifically introduced to improve 
security on Windows, so some thought will need to be given to maintaining
that as best as possible.

Cliff

> Transaction support for the WCF channel
> ---------------------------------------
>
>                 Key: QPID-2128
>                 URL: https://issues.apache.org/jira/browse/QPID-2128
>             Project: Qpid
>          Issue Type: New Feature
>          Components: WCF/C++ Client
>    Affects Versions: 0.6
>         Environment: Windows
>            Reporter: Cliff Jansen
>         Attachments: cppbld.patch, qpid2128_1.patch, wcfbld.patch
>
>
> Transaction support is currently lacking from the WCF channel.
> As an initial implementation, full distributed transaction support from within .NET is proposed using the dtx AMQP classes and creating a plugin to the MSDTC infrastructure to drive recovery.
> Added performance from promotable transaction enlistment is deferred to a later date.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org


[jira] Commented: (QPID-2128) Transaction support for the WCF channel

Posted by "Steve Huston (JIRA)" <qp...@incubator.apache.org>.
    [ https://issues.apache.org/jira/browse/QPID-2128?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12791667#action_12791667 ] 

Steve Huston commented on QPID-2128:
------------------------------------

cppbld.patch applied and tested clean.

After applying QPID-2128-2.patch and wcfbld.patch I got the following build errors. Am I missing something from the environment?

XaTransaction.cpp
c:\qpid\trunk\qpid\cpp\include\qpid/framing/FieldValue.h(125) : warning C4244: 'return' : conversion from 'int64_t' to 'int', possible loss of data
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\AmqpSession.h(32) : error C2039: 'Transactions' : is not a member of 'System'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\AmqpSession.h(32) : error C2871: 'Transactions' : a namespace with this name does not exist
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\AmqpSession.h(64) : error C2143: syntax error : missing ';' before '^'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\AmqpSession.h(64) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\AmqpSession.h(64) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(28) : error C2039: 'Transactions' : is not a member of 'System'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(28) : error C2871: 'Transactions' : a namespace with this name does not exist
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(44) : error C2061: syntax error : identifier 'Transaction'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(48) : error C2065: 'Transaction' : undeclared identifier
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(48) : error C2059: syntax error : ','
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(48) : error C2059: syntax error : '>'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(59) : error C2065: 'Transaction' : undeclared identifier
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(59) : error C2065: 'transaction' : undeclared identifier
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(59) : error C2143: syntax error : missing ',' before ')'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(63) : error C2143: syntax error : missing ';' before '{'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(64) : error C2143: syntax error : missing ';' before '{'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(65) : error C2143: syntax error : missing ';' before '}'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(74) : error C2143: syntax error : missing ';' before '}'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(76) : error C2143: syntax error : missing ';' before '}'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(22) : error C2143: syntax error : missing ';' before '{'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(23) : error C2143: syntax error : missing ';' before '{'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(24) : error C2143: syntax error : missing ';' before '{'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(28) : error C2039: 'Transactions' : is not a member of 'System'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(30) : error C3277: cannot define an unmanaged enum 'Apache::Qpid::Interop::DtxResourceManager::DtcCallbackType' inside managed 'Apache::Qpid::Interop::DtxResourceManager'
        use 'enum class'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(30) : error C2143: syntax error : missing ';' before '{'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(32) : error C2065: 'DTC_COMMIT' : undeclared identifier
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(33) : error C2065: 'DTC_ABORT' : undeclared identifier
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(34) : error C2065: 'DTC_SINGLE_PHASE' : undeclared identifier
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(36) : error C2065: 'DTC_TMDOWN' : undeclared identifier
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(36) : error C2143: syntax error : missing ',' before '}'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(36) : error C2143: syntax error : missing ';' before '}'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(51) : error C3379: 'Apache::Qpid::Interop::DtxResourceManager::XaTransaction' : a nested class cannot have an assembly access specifier as part of its declaration
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(51) : error C2143: syntax error : missing ';' before '{'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(76) : error C2065: 'pXaHelper' : undeclared identifier
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(76) : error C2275: 'IDtcToXaHelperSinglePipe' : illegal use of this type as an expression
        C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\oletx2xa.h(455) : see declaration of 'IDtcToXaHelperSinglePipe'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(76) : error C2146: syntax error : missing ',' before identifier 'rmCookie'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(76) : error C2327: 'Apache::Qpid::Interop::DtxResourceManager::rmCookie' : is not a type name, static, or enumerator
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(76) : error C2065: 'rmCookie' : undeclared identifier
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(76) : error C2146: syntax error : missing ',' before identifier 'rm'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(76) : error C2065: 'rm' : undeclared identifier
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(76) : error C2143: syntax error : missing ',' before ')'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(84) : error C2143: syntax error : missing ';' before '{'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(85) : error C2143: syntax error : missing ';' before '{'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(86) : error C2143: syntax error : missing ';' before '}'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(93) : error C2143: syntax error : missing ';' before '}'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(95) : error C2143: syntax error : missing ';' before '}'
.\XaTransaction.cpp(41) : error C2143: syntax error : missing ';' before '{'
.\XaTransaction.cpp(42) : error C2143: syntax error : missing ';' before '{'
.\XaTransaction.cpp(43) : error C2143: syntax error : missing ';' before '{'
.\XaTransaction.cpp(47) : error C2039: 'Transactions' : is not a member of 'System'
.\XaTransaction.cpp(54) : error C3295: '#pragma unmanaged' can only be used at global or namespace scope
.\XaTransaction.cpp(62) : error C2143: syntax error : missing ';' before '{'
.\XaTransaction.cpp(68) : error C3861: 'useCount': identifier not found
.\XaTransaction.cpp(68) : error C2143: syntax error : missing ',' before '{'
.\XaTransaction.cpp(68) : error C2143: syntax error : missing ';' before '{'
.\XaTransaction.cpp(69) : error C2143: syntax error : missing ';' before '{'
.\XaTransaction.cpp(71) : error C2065: 'unused' : undeclared identifier
.\XaTransaction.cpp(71) : error C2275: 'XACTUOW' : illegal use of this type as an expression
        C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\transact.h(149) : see declaration of 'XACTUOW'
.\XaTransaction.cpp(71) : error C2143: syntax error : missing ',' before ')'
.\XaTransaction.cpp(72) : error C2146: syntax error : missing ',' before identifier 'unused3'
.\XaTransaction.cpp(72) : error C2065: 'unused3' : undeclared identifier
.\XaTransaction.cpp(72) : error C2143: syntax error : missing ',' before ')'
.\XaTransaction.cpp(75) : error C2653: 'DtcCallbackHandler' : is not a class or namespace name
.\XaTransaction.cpp(75) : error C2146: syntax error : missing ',' before identifier 'ppvObject'
.\XaTransaction.cpp(75) : error C2065: 'ppvObject' : undeclared identifier
.\XaTransaction.cpp(75) : error C2143: syntax error : missing ',' before ')'
.\XaTransaction.cpp(76) : error C2653: 'DtcCallbackHandler' : is not a class or namespace name
.\XaTransaction.cpp(77) : error C2653: 'DtcCallbackHandler' : is not a class or namespace name
.\XaTransaction.cpp(79) : error C2143: syntax error : missing ';' before '}'
.\XaTransaction.cpp(82) : error C2653: 'DtcCallbackHandler' : is not a class or namespace name
.\XaTransaction.cpp(83) : error C2143: syntax error : missing ';' before '{'
.\XaTransaction.cpp(84) : error C2143: syntax error : missing ';' before '{'
.\XaTransaction.cpp(86) : error C2143: syntax error : missing ';' before '}'
.\XaTransaction.cpp(89) : error C2143: syntax error : missing ';' before '}'
.\XaTransaction.cpp(92) : error C2653: 'DtcCallbackHandler' : is not a class or namespace name
.\XaTransaction.cpp(92) : error C2065: 'unused' : undeclared identifier
.\XaTransaction.cpp(92) : error C2275: 'XACTUOW' : illegal use of this type as an expression
        C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\transact.h(149) : see declaration of 'XACTUOW'
.\XaTransaction.cpp(92) : error C2143: syntax error : missing ',' before ')'
.\XaTransaction.cpp(93) : error C2143: syntax error : missing ';' before '{'
.\XaTransaction.cpp(95) : error C2143: syntax error : missing ';' before '}'
.\XaTransaction.cpp(97) : error C2653: 'DtcCallbackHandler' : is not a class or namespace name
.\XaTransaction.cpp(97) : error C2146: syntax error : missing ',' before identifier 'unused3'
.\XaTransaction.cpp(97) : error C2065: 'unused3' : undeclared identifier
.\XaTransaction.cpp(97) : error C2143: syntax error : missing ',' before ')'
.\XaTransaction.cpp(98) : error C2143: syntax error : missing ';' before '{'
.\XaTransaction.cpp(100) : error C2143: syntax error : missing ';' before '}'
.\XaTransaction.cpp(103) : error C2653: 'DtcCallbackHandler' : is not a class or namespace name
.\XaTransaction.cpp(104) : error C2143: syntax error : missing ';' before '{'
.\XaTransaction.cpp(106) : error C2143: syntax error : missing ';' before '}'
.\XaTransaction.cpp(109) : error C2653: 'DtcCallbackHandler' : is not a class or namespace name
.\XaTransaction.cpp(109) : error C2146: syntax error : missing ',' before identifier 'ppvObject'
.\XaTransaction.cpp(109) : error C2065: 'ppvObject' : undeclared identifier
.\XaTransaction.cpp(109) : error C2143: syntax error : missing ',' before ')'
.\XaTransaction.cpp(110) : error C2143: syntax error : missing ';' before '{'
.\XaTransaction.cpp(120) : error C2143: syntax error : missing ';' before '}'
.\XaTransaction.cpp(123) : error C2653: 'DtcCallbackHandler' : is not a class or namespace name
.\XaTransaction.cpp(124) : error C2143: syntax error : missing ';' before '{'
.\XaTransaction.cpp(126) : error C2143: syntax error : missing ';' before '}'
.\XaTransaction.cpp(129) : error C2653: 'DtcCallbackHandler' : is not a class or namespace name
.\XaTransaction.cpp(130) : error C2143: syntax error : missing ';' before '{'
.\XaTransaction.cpp(138) : error C2143: syntax error : missing ';' before '}'
.\XaTransaction.cpp(143) : error C3295: '#pragma managed' can only be used at global or namespace scope
.\XaTransaction.cpp(156) : error C2027: use of undefined type 'Apache::Qpid::Interop::XaTransaction'
        c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\AmqpSession.h(41) : see declaration of 'Apache::Qpid::Interop::XaTransaction'
.\XaTransaction.cpp(156) : fatal error C1003: error count exceeds 100; stopping compilation
DtxResourceManager.cpp
c:\qpid\trunk\qpid\cpp\include\qpid/framing/FieldValue.h(125) : warning C4244: 'return' : conversion from 'int64_t' to 'int', possible loss of data
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\AmqpSession.h(32) : error C2039: 'Transactions' : is not a member of 'System'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\AmqpSession.h(32) : error C2871: 'Transactions' : a namespace with this name does not exist
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\AmqpSession.h(64) : error C2143: syntax error : missing ';' before '^'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\AmqpSession.h(64) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\AmqpSession.h(64) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(28) : error C2039: 'Transactions' : is not a member of 'System'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(28) : error C2871: 'Transactions' : a namespace with this name does not exist
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(44) : error C2061: syntax error : identifier 'Transaction'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(48) : error C2065: 'Transaction' : undeclared identifier
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(48) : error C2059: syntax error : ','
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(48) : error C2059: syntax error : '>'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(59) : error C2065: 'Transaction' : undeclared identifier
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(59) : error C2065: 'transaction' : undeclared identifier
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(59) : error C2143: syntax error : missing ',' before ')'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(63) : error C2143: syntax error : missing ';' before '{'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(64) : error C2143: syntax error : missing ';' before '{'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(65) : error C2143: syntax error : missing ';' before '}'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(74) : error C2143: syntax error : missing ';' before '}'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(76) : error C2143: syntax error : missing ';' before '}'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(22) : error C2143: syntax error : missing ';' before '{'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(23) : error C2143: syntax error : missing ';' before '{'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(24) : error C2143: syntax error : missing ';' before '{'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(28) : error C2039: 'Transactions' : is not a member of 'System'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(30) : error C3277: cannot define an unmanaged enum 'Apache::Qpid::Interop::DtxResourceManager::DtcCallbackType' inside managed 'Apache::Qpid::Interop::DtxResourceManager'
        use 'enum class'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(30) : error C2143: syntax error : missing ';' before '{'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(32) : error C2065: 'DTC_COMMIT' : undeclared identifier
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(33) : error C2065: 'DTC_ABORT' : undeclared identifier
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(34) : error C2065: 'DTC_SINGLE_PHASE' : undeclared identifier
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(36) : error C2065: 'DTC_TMDOWN' : undeclared identifier
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(36) : error C2143: syntax error : missing ',' before '}'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(36) : error C2143: syntax error : missing ';' before '}'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(51) : error C3379: 'Apache::Qpid::Interop::DtxResourceManager::XaTransaction' : a nested class cannot have an assembly access specifier as part of its declaration
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(51) : error C2143: syntax error : missing ';' before '{'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(76) : error C2065: 'pXaHelper' : undeclared identifier
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(76) : error C2275: 'IDtcToXaHelperSinglePipe' : illegal use of this type as an expression
        C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\oletx2xa.h(455) : see declaration of 'IDtcToXaHelperSinglePipe'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(76) : error C2146: syntax error : missing ',' before identifier 'rmCookie'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(76) : error C2327: 'Apache::Qpid::Interop::DtxResourceManager::rmCookie' : is not a type name, static, or enumerator
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(76) : error C2065: 'rmCookie' : undeclared identifier
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(76) : error C2146: syntax error : missing ',' before identifier 'rm'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(76) : error C2065: 'rm' : undeclared identifier
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(76) : error C2143: syntax error : missing ',' before ')'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(84) : error C2143: syntax error : missing ';' before '{'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(85) : error C2143: syntax error : missing ';' before '{'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(86) : error C2143: syntax error : missing ';' before '}'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(93) : error C2143: syntax error : missing ';' before '}'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(95) : error C2143: syntax error : missing ';' before '}'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\QpidException.h(22) : error C2143: syntax error : missing ';' before '{'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\QpidException.h(23) : error C2143: syntax error : missing ';' before '{'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\QpidException.h(24) : error C2143: syntax error : missing ';' before '{'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\QpidException.h(28) : error C3379: 'Apache::Qpid::Interop::DtxResourceManager::QpidException' : a nested class cannot have an assembly access specifier as part of its declaration
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\QpidException.h(29) : error C2143: syntax error : missing ';' before '{'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\QpidException.h(32) : error C2143: syntax error : missing ';' before '{'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\QpidException.h(33) : error C2143: syntax error : missing ';' before '{'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\QpidException.h(35) : error C2143: syntax error : missing ';' before '}'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\QpidException.h(37) : error C2143: syntax error : missing ';' before '}'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\QpidMarshal.h(22) : error C2143: syntax error : missing ';' before '{'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\QpidMarshal.h(23) : error C2143: syntax error : missing ';' before '{'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\QpidMarshal.h(24) : error C2143: syntax error : missing ';' before '{'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\QpidMarshal.h(33) : error C3379: 'Apache::Qpid::Interop::DtxResourceManager::QpidMarshal' : a nested class cannot have an assembly access specifier as part of its declaration
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\QpidMarshal.h(33) : error C2143: syntax error : missing ';' before '{'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\QpidMarshal.h(38) : error C2143: syntax error : missing ';' before '{'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\QpidMarshal.h(39) : error C2143: syntax error : missing ';' before '{'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\QpidMarshal.h(41) : error C2143: syntax error : missing ';' before '}'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\QpidMarshal.h(42) : error C2653: 'Encoding' : is not a class or namespace name
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\QpidMarshal.h(43) : error C2143: syntax error : missing ';' before '{'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\QpidMarshal.h(45) : error C2143: syntax error : missing ';' before '}'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\QpidMarshal.h(48) : error C2065: 'mbytes' : undeclared identifier
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\QpidMarshal.h(48) : error C2227: left of '->Length' must point to class/struct/union/generic type
        type is ''unknown-type''
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\QpidMarshal.h(48) : error C2143: syntax error : missing ',' before ')'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\QpidMarshal.h(50) : error C2143: syntax error : missing ';' before '}'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\QpidMarshal.h(51) : error C2143: syntax error : missing ';' before '}'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\QpidMarshal.h(53) : error C2143: syntax error : missing ';' before '}'
.\DtxResourceManager.cpp(43) : error C2143: syntax error : missing ';' before '{'
.\DtxResourceManager.cpp(44) : error C2143: syntax error : missing ';' before '{'
.\DtxResourceManager.cpp(45) : error C2143: syntax error : missing ';' before '{'
.\DtxResourceManager.cpp(49) : error C2039: 'Transactions' : is not a member of 'System'
.\DtxResourceManager.cpp(78) : error C2143: syntax error : missing ';' before '{'
.\DtxResourceManager.cpp(87) : error C2065: 'Transaction' : undeclared identifier
.\DtxResourceManager.cpp(87) : error C2059: syntax error : ','
.\DtxResourceManager.cpp(87) : error C2059: syntax error : '>'
.\DtxResourceManager.cpp(91) : error C2143: syntax error : missing ';' before '{'
.\DtxResourceManager.cpp(95) : error C2065: 'tmp' : undeclared identifier
.\DtxResourceManager.cpp(95) : error C2143: syntax error : missing ',' before ')'
.\DtxResourceManager.cpp(101) : error C2065: 'tmp2' : undeclared identifier
.\DtxResourceManager.cpp(101) : error C2143: syntax error : missing ',' before ')'
.\DtxResourceManager.cpp(106) : error C2653: 'QpidMarshal' : is not a class or namespace name
.\DtxResourceManager.cpp(111) : error C2065: 'tmp3' : undeclared identifier
.\DtxResourceManager.cpp(111) : error C2143: syntax error : missing ',' before ')'
.\DtxResourceManager.cpp(112) : error C2143: syntax error : missing ';' before '{'
.\DtxResourceManager.cpp(113) : error C2143: syntax error : missing ';' before '{'
.\DtxResourceManager.cpp(128) : error C2143: syntax error : missing ';' before '}'
.\DtxResourceManager.cpp(129) : error C2143: syntax error : missing ';' before '}'
.\DtxResourceManager.cpp(132) : error C2143: syntax error : missing ';' before '}'
.\DtxResourceManager.cpp(133) : error C2143: syntax error : missing ';' before '{'
.\DtxResourceManager.cpp(134) : error C2143: syntax error : missing ';' before '{'
.\DtxResourceManager.cpp(137) : error C2143: syntax error : missing ';' before '}'
.\DtxResourceManager.cpp(138) : error C2143: syntax error : missing ';' before '}'
.\DtxResourceManager.cpp(139) : error C2143: syntax error : missing ';' before '}'
.\DtxResourceManager.cpp(142) : error C2143: syntax error : missing ';' before '{'
.\DtxResourceManager.cpp(144) : error C2143: syntax error : missing ';' before '}'
.\DtxResourceManager.cpp(147) : error C2143: syntax error : missing ';' before '{'
.\DtxResourceManager.cpp(150) : error C2143: syntax error : missing ';' before '}'
.\DtxResourceManager.cpp(156) : error C2143: syntax error : missing ';' before '{'
.\DtxResourceManager.cpp(156) : fatal error C1003: error count exceeds 100; stopping compilation
OutputLink.cpp
c:\qpid\trunk\qpid\cpp\include\qpid/framing/FieldValue.h(125) : warning C4244: 'return' : conversion from 'int64_t' to 'int', possible loss of data
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\AmqpSession.h(32) : error C2039: 'Transactions' : is not a member of 'System'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\AmqpSession.h(32) : error C2871: 'Transactions' : a namespace with this name does not exist
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\AmqpSession.h(64) : error C2143: syntax error : missing ';' before '^'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\AmqpSession.h(64) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\AmqpSession.h(64) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
MessageWaiter.cpp
c:\qpid\trunk\qpid\cpp\include\qpid/framing/FieldValue.h(125) : warning C4244: 'return' : conversion from 'int64_t' to 'int', possible loss of data
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\AmqpSession.h(32) : error C2039: 'Transactions' : is not a member of 'System'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\AmqpSession.h(32) : error C2871: 'Transactions' : a namespace with this name does not exist
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\AmqpSession.h(64) : error C2143: syntax error : missing ';' before '^'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\AmqpSession.h(64) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\AmqpSession.h(64) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
InputLink.cpp
c:\qpid\trunk\qpid\cpp\include\qpid/framing/FieldValue.h(125) : warning C4244: 'return' : conversion from 'int64_t' to 'int', possible loss of data
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\AmqpSession.h(32) : error C2039: 'Transactions' : is not a member of 'System'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\AmqpSession.h(32) : error C2871: 'Transactions' : a namespace with this name does not exist
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\AmqpSession.h(64) : error C2143: syntax error : missing ';' before '^'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\AmqpSession.h(64) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\AmqpSession.h(64) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
.\InputLink.cpp(105) : warning C4482: nonstandard extension used: enum 'qpid::client::CompletionMode' used in qualified name
CompletionWaiter.cpp
c:\qpid\trunk\qpid\cpp\include\qpid/framing/FieldValue.h(125) : warning C4244: 'return' : conversion from 'int64_t' to 'int', possible loss of data
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\AmqpSession.h(32) : error C2039: 'Transactions' : is not a member of 'System'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\AmqpSession.h(32) : error C2871: 'Transactions' : a namespace with this name does not exist
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\AmqpSession.h(64) : error C2143: syntax error : missing ';' before '^'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\AmqpSession.h(64) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\AmqpSession.h(64) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
AmqpSession.cpp
c:\qpid\trunk\qpid\cpp\include\qpid/framing/FieldValue.h(125) : warning C4244: 'return' : conversion from 'int64_t' to 'int', possible loss of data
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\AmqpSession.h(32) : error C2039: 'Transactions' : is not a member of 'System'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\AmqpSession.h(32) : error C2871: 'Transactions' : a namespace with this name does not exist
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\AmqpSession.h(64) : error C2143: syntax error : missing ';' before '^'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\AmqpSession.h(64) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\AmqpSession.h(64) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(28) : error C2039: 'Transactions' : is not a member of 'System'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(28) : error C2871: 'Transactions' : a namespace with this name does not exist
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(55) : error C2143: syntax error : missing ';' before '^'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(55) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(55) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(76) : error C2061: syntax error : identifier 'Transaction'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(28) : error C2039: 'Transactions' : is not a member of 'System'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(28) : error C2871: 'Transactions' : a namespace with this name does not exist
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(44) : error C2061: syntax error : identifier 'Transaction'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(48) : error C2065: 'Transaction' : undeclared identifier
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(48) : error C2059: syntax error : ','
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(48) : error C2059: syntax error : '>'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(59) : error C2065: 'Transaction' : undeclared identifier
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(59) : error C2065: 'transaction' : undeclared identifier
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(59) : error C2143: syntax error : missing ',' before ')'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(63) : error C2143: syntax error : missing ';' before '{'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(64) : error C2143: syntax error : missing ';' before '{'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(65) : error C2143: syntax error : missing ';' before '}'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(74) : error C2143: syntax error : missing ';' before '}'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(76) : error C2143: syntax error : missing ';' before '}'
.\AmqpSession.cpp(45) : error C2143: syntax error : missing ';' before '{'
.\AmqpSession.cpp(46) : error C2143: syntax error : missing ';' before '{'
.\AmqpSession.cpp(47) : error C2143: syntax error : missing ';' before '{'
.\AmqpSession.cpp(51) : error C2039: 'Transactions' : is not a member of 'System'
.\AmqpSession.cpp(58) : error C2065: 'qpidConnectionp' : undeclared identifier
.\AmqpSession.cpp(58) : error C2275: 'qpid::client::Connection' : illegal use of this type as an expression
.\AmqpSession.cpp(58) : error C2143: syntax error : missing ',' before ')'
.\AmqpSession.cpp(60) : error C3861: 'sessionp': identifier not found
.\AmqpSession.cpp(61) : error C3861: 'sessionImplp': identifier not found
.\AmqpSession.cpp(62) : error C3861: 'subs_mgrp': identifier not found
.\AmqpSession.cpp(63) : error C3861: 'helperRunning': identifier not found
.\AmqpSession.cpp(64) : error C3861: 'openCount': identifier not found
.\AmqpSession.cpp(65) : error C3861: 'syncCount': identifier not found
.\AmqpSession.cpp(66) : error C3861: 'closing': identifier not found
.\AmqpSession.cpp(67) : error C3861: 'dtxEnabled': identifier not found
.\AmqpSession.cpp(68) : error C2143: syntax error : missing ',' before '{'
.\AmqpSession.cpp(68) : error C2143: syntax error : missing ';' before '{'
.\AmqpSession.cpp(70) : error C2143: syntax error : missing ';' before '{'
.\AmqpSession.cpp(78) : error C2143: syntax error : missing ';' before '}'
.\AmqpSession.cpp(79) : error C2143: syntax error : missing ';' before '{'
.\AmqpSession.cpp(83) : error C2143: syntax error : missing ';' before '}'
.\AmqpSession.cpp(84) : error C2143: syntax error : missing ';' before '}'
.\AmqpSession.cpp(85) : error C2143: syntax error : missing ';' before '}'
.\AmqpSession.cpp(89) : error C2143: syntax error : missing ';' before '{'
.\AmqpSession.cpp(92) : error C2143: syntax error : missing ';' before '{'
.\AmqpSession.cpp(97) : error C2143: syntax error : missing ';' before '}'
.\AmqpSession.cpp(99) : error C2143: syntax error : missing ';' before '{'
.\AmqpSession.cpp(100) : error C2143: syntax error : missing ';' before '{'
.\AmqpSession.cpp(102) : error C2143: syntax error : missing ';' before '}'
.\AmqpSession.cpp(106) : error C2143: syntax error : missing ';' before '}'
.\AmqpSession.cpp(107) : error C2143: syntax error : missing ';' before '}'
.\AmqpSession.cpp(111) : error C2143: syntax error : missing ';' before '{'
.\AmqpSession.cpp(113) : error C2143: syntax error : missing ';' before '}'
.\AmqpSession.cpp(117) : error C2143: syntax error : missing ';' before '{'
.\AmqpSession.cpp(120) : error C2143: syntax error : missing ';' before '}'
.\AmqpSession.cpp(126) : error C2143: syntax error : missing ';' before '{'
.\AmqpSession.cpp(134) : error C2143: syntax error : missing ';' before '{'
.\AmqpSession.cpp(137) : error C2143: syntax error : missing ';' before '{'
.\AmqpSession.cpp(139) : error C2143: syntax error : missing ';' before '{'
.\AmqpSession.cpp(142) : error C2143: syntax error : missing ';' before '{'
.\AmqpSession.cpp(145) : error C2143: syntax error : missing ';' before '}'
.\AmqpSession.cpp(147) : error C2143: syntax error : missing ';' before '}'
.\AmqpSession.cpp(148) : error C2143: syntax error : missing ';' before '}'
.\AmqpSession.cpp(153) : error C2143: syntax error : missing ';' before '{'
.\AmqpSession.cpp(155) : error C2143: syntax error : missing ',' before ')'
.\AmqpSession.cpp(159) : error C2143: syntax error : missing ';' before '}'
.\AmqpSession.cpp(160) : error C2143: syntax error : missing ';' before '}'
.\AmqpSession.cpp(163) : error C2143: syntax error : missing ';' before '}'
.\AmqpSession.cpp(166) : error C2143: syntax error : missing ';' before '{'
.\AmqpSession.cpp(167) : error C2143: syntax error : missing ',' before ')'
.\AmqpSession.cpp(168) : error C2143: syntax error : missing ';' before '}'
.\AmqpSession.cpp(171) : error C2146: syntax error : missing ',' before identifier 'filterKey'
.\AmqpSession.cpp(171) : error C2065: 'filterKey' : undeclared identifier
.\AmqpSession.cpp(171) : error C2146: syntax error : missing ',' before identifier 'exchange'
.\AmqpSession.cpp(171) : error C2065: 'exchange' : undeclared identifier
.\AmqpSession.cpp(171) : error C2143: syntax error : missing ',' before ')'
.\AmqpSession.cpp(172) : error C2143: syntax error : missing ';' before '{'
.\AmqpSession.cpp(177) : error C2065: 'sourceQueue' : undeclared identifier
.\AmqpSession.cpp(177) : error C2065: 'sessionp' : undeclared identifier
.\AmqpSession.cpp(177) : error C2065: 'subs_mgrp' : undeclared identifier
.\AmqpSession.cpp(177) : error C2065: 'exclusive' : undeclared identifier
.\AmqpSession.cpp(177) : error C2065: 'temporary' : undeclared identifier
.\AmqpSession.cpp(177) : error C2065: 'filterKey' : undeclared identifier
.\AmqpSession.cpp(177) : error C2065: 'exchange' : undeclared identifier
.\AmqpSession.cpp(177) : error C2143: syntax error : missing ',' before ')'
.\AmqpSession.cpp(178) : error C2143: syntax error : missing ';' before '{'
.\AmqpSession.cpp(179) : error C2143: syntax error : missing ';' before '{'
.\AmqpSession.cpp(182) : error C2143: syntax error : missing ';' before '}'
.\AmqpSession.cpp(184) : error C2143: syntax error : missing ';' before '}'
.\AmqpSession.cpp(186) : error C2143: syntax error : missing ';' before '}'
.\AmqpSession.cpp(189) : error C2143: syntax error : missing ';' before '{'
.\AmqpSession.cpp(194) : error C2065: 'targetQueue' : undeclared identifier
.\AmqpSession.cpp(196) : error C2143: syntax error : missing ';' before '{'
.\AmqpSession.cpp(201) : error C2143: syntax error : missing ';' before '}'
.\AmqpSession.cpp(203) : error C2143: syntax error : missing ';' before '{'
.\AmqpSession.cpp(206) : error C2143: syntax error : missing ';' before '}'
.\AmqpSession.cpp(210) : error C2143: syntax error : missing ';' before '}'
.\AmqpSession.cpp(215) : error C2143: syntax error : missing ';' before '{'
.\AmqpSession.cpp(218) : error C2143: syntax error : missing ';' before '{'
.\AmqpSession.cpp(220) : error C2143: syntax error : missing ';' before '}'
.\AmqpSession.cpp(220) : fatal error C1003: error count exceeds 100; stopping compilation
AmqpConnection.cpp
c:\qpid\trunk\qpid\cpp\include\qpid/framing/FieldValue.h(125) : warning C4244: 'return' : conversion from 'int64_t' to 'int', possible loss of data
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\AmqpSession.h(32) : error C2039: 'Transactions' : is not a member of 'System'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\AmqpSession.h(32) : error C2871: 'Transactions' : a namespace with this name does not exist
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\AmqpSession.h(64) : error C2143: syntax error : missing ';' before '^'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\AmqpSession.h(64) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\AmqpSession.h(64) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(28) : error C2039: 'Transactions' : is not a member of 'System'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(28) : error C2871: 'Transactions' : a namespace with this name does not exist
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(44) : error C2061: syntax error : identifier 'Transaction'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(48) : error C2065: 'Transaction' : undeclared identifier
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(48) : error C2059: syntax error : ','
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(48) : error C2059: syntax error : '>'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(59) : error C2065: 'Transaction' : undeclared identifier
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(59) : error C2065: 'transaction' : undeclared identifier
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(59) : error C2143: syntax error : missing ',' before ')'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(63) : error C2143: syntax error : missing ';' before '{'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(64) : error C2143: syntax error : missing ';' before '{'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(65) : error C2143: syntax error : missing ';' before '}'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(74) : error C2143: syntax error : missing ';' before '}'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\DtxResourceManager.h(76) : error C2143: syntax error : missing ';' before '}'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(22) : error C2143: syntax error : missing ';' before '{'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(23) : error C2143: syntax error : missing ';' before '{'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(24) : error C2143: syntax error : missing ';' before '{'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(28) : error C2039: 'Transactions' : is not a member of 'System'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(30) : error C3277: cannot define an unmanaged enum 'Apache::Qpid::Interop::DtxResourceManager::DtcCallbackType' inside managed 'Apache::Qpid::Interop::DtxResourceManager'
        use 'enum class'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(30) : error C2143: syntax error : missing ';' before '{'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(32) : error C2065: 'DTC_COMMIT' : undeclared identifier
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(33) : error C2065: 'DTC_ABORT' : undeclared identifier
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(34) : error C2065: 'DTC_SINGLE_PHASE' : undeclared identifier
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(36) : error C2065: 'DTC_TMDOWN' : undeclared identifier
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(36) : error C2143: syntax error : missing ',' before '}'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(36) : error C2143: syntax error : missing ';' before '}'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(51) : error C3379: 'Apache::Qpid::Interop::DtxResourceManager::XaTransaction' : a nested class cannot have an assembly access specifier as part of its declaration
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(51) : error C2143: syntax error : missing ';' before '{'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(76) : error C2065: 'pXaHelper' : undeclared identifier
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(76) : error C2275: 'IDtcToXaHelperSinglePipe' : illegal use of this type as an expression
        C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\oletx2xa.h(455) : see declaration of 'IDtcToXaHelperSinglePipe'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(76) : error C2146: syntax error : missing ',' before identifier 'rmCookie'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(76) : error C2327: 'Apache::Qpid::Interop::DtxResourceManager::rmCookie' : is not a type name, static, or enumerator
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(76) : error C2065: 'rmCookie' : undeclared identifier
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(76) : error C2146: syntax error : missing ',' before identifier 'rm'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(76) : error C2065: 'rm' : undeclared identifier
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(76) : error C2143: syntax error : missing ',' before ')'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(84) : error C2143: syntax error : missing ';' before '{'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(85) : error C2143: syntax error : missing ';' before '{'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(86) : error C2143: syntax error : missing ';' before '}'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(93) : error C2143: syntax error : missing ';' before '}'
c:\qpid\trunk\qpid\wcf\src\apache\qpid\interop\XaTransaction.h(95) : error C2143: syntax error : missing ';' before '}'
.\AmqpConnection.cpp(38) : error C2143: syntax error : missing ';' before '{'
.\AmqpConnection.cpp(39) : error C2143: syntax error : missing ';' before '{'
.\AmqpConnection.cpp(40) : error C2143: syntax error : missing ';' before '{'
.\AmqpConnection.cpp(58) : error C3861: 'busyCount': identifier not found
.\AmqpConnection.cpp(59) : error C3861: 'disposed': identifier not found
.\AmqpConnection.cpp(60) : error C2143: syntax error : missing ',' before '{'
.\AmqpConnection.cpp(60) : error C2143: syntax error : missing ';' before '{'
.\AmqpConnection.cpp(65) : error C2143: syntax error : missing ';' before '{'
.\AmqpConnection.cpp(67) : error C2065: 'port' : undeclared identifier
.\AmqpConnection.cpp(75) : error C2143: syntax error : missing ';' before '}'
.\AmqpConnection.cpp(78) : error C2143: syntax error : missing ';' before '}'
.\AmqpConnection.cpp(79) : error C2143: syntax error : missing ';' before '{'
.\AmqpConnection.cpp(81) : error C2143: syntax error : missing ';' before '{'
.\AmqpConnection.cpp(83) : error C2143: syntax error : missing ';' before '}'
.\AmqpConnection.cpp(85) : error C2143: syntax error : missing ';' before '}'
.\AmqpConnection.cpp(86) : error C2143: syntax error : missing ';' before '}'
.\AmqpConnection.cpp(87) : error C2143: syntax error : missing ';' before '}'
.\AmqpConnection.cpp(89) : error C2143: syntax error : missing ';' before '{'
.\AmqpConnection.cpp(92) : error C2355: 'this' : can only be referenced inside non-static member functions
.\AmqpConnection.cpp(92) : error C2227: left of '->port' must point to class/struct/union/generic type
.\AmqpConnection.cpp(92) : error C2143: syntax error : missing ',' before ')'
.\AmqpConnection.cpp(93) : error C2143: syntax error : missing ';' before '}'
.\AmqpConnection.cpp(96) : error C2143: syntax error : missing ';' before '{'
.\AmqpConnection.cpp(97) : error C2143: syntax error : missing ';' before '{'
.\AmqpConnection.cpp(102) : error C2143: syntax error : missing ';' before '}'
.\AmqpConnection.cpp(104) : error C2143: syntax error : missing ';' before '{'
.\AmqpConnection.cpp(107) : error C2143: syntax error : missing ';' before '{'
.\AmqpConnection.cpp(109) : error C2143: syntax error : missing ';' before '}'
.\AmqpConnection.cpp(110) : error C2143: syntax error : missing ';' before '}'
.\AmqpConnection.cpp(112) : error C2143: syntax error : missing ';' before '{'
.\AmqpConnection.cpp(113) : error C2143: syntax error : missing ';' before '{'
.\AmqpConnection.cpp(118) : error C2143: syntax error : missing ';' before '}'
.\AmqpConnection.cpp(119) : error C2143: syntax error : missing ';' before '}'
.\AmqpConnection.cpp(120) : error C2143: syntax error : missing ';' before '}'
.\AmqpConnection.cpp(123) : error C2143: syntax error : missing ';' before '{'
.\AmqpConnection.cpp(125) : error C2143: syntax error : missing ';' before '}'
.\AmqpConnection.cpp(128) : error C2143: syntax error : missing ';' before '{'
.\AmqpConnection.cpp(130) : error C2143: syntax error : missing ';' before '}'
.\AmqpConnection.cpp(133) : error C2143: syntax error : missing ';' before '{'
.\AmqpConnection.cpp(137) : error C2143: syntax error : missing ';' before '}'
.\AmqpConnection.cpp(140) : error C2143: syntax error : missing ';' before '{'
.\AmqpConnection.cpp(142) : error C2143: syntax error : missing ';' before '{'
.\AmqpConnection.cpp(144) : error C2143: syntax error : missing ';' before '}'
.\AmqpConnection.cpp(145) : error C2065: 'connectionp' : undeclared identifier
.\AmqpConnection.cpp(148) : error C2143: syntax error : missing ';' before '}'
.\AmqpConnection.cpp(153) : error C2143: syntax error : missing ';' before '{'
.\AmqpConnection.cpp(155) : error C2143: syntax error : missing ';' before '{'
.\AmqpConnection.cpp(159) : error C2143: syntax error : missing ';' before '}'
.\AmqpConnection.cpp(160) : error C2143: syntax error : missing ';' before '}'
.\AmqpConnection.cpp(166) : error C2143: syntax error : missing ';' before '{'
.\AmqpConnection.cpp(168) : error C2143: syntax error : missing ';' before '{'
.\AmqpConnection.cpp(172) : error C2143: syntax error : missing ';' before '}'
.\AmqpConnection.cpp(173) : error C2143: syntax error : missing ';' before '{'
.\AmqpConnection.cpp(175) : error C2143: syntax error : missing ';' before '}'
.\AmqpConnection.cpp(176) : error C2143: syntax error : missing ';' before '}'
.\AmqpConnection.cpp(179) : error C2143: syntax error : missing ';' before '}'
.\AmqpConnection.cpp(180) : error C2143: syntax error : missing ';' before '}'
.\AmqpConnection.cpp(180) : fatal error C1003: error count exceeds 100; stopping compilation
Build log was saved at "file://c:\qpid\trunk\qpid\wcf\src\Apache\Qpid\Interop\Debug\BuildLog.htm"
Interop - 438 error(s), 9 warning(s)

> Transaction support for the WCF channel
> ---------------------------------------
>
>                 Key: QPID-2128
>                 URL: https://issues.apache.org/jira/browse/QPID-2128
>             Project: Qpid
>          Issue Type: New Feature
>          Components: WCF/C++ Client
>    Affects Versions: 0.6
>         Environment: Windows
>            Reporter: Cliff Jansen
>            Assignee: Steve Huston
>            Priority: Critical
>             Fix For: 0.6
>
>         Attachments: cppbld.patch, QPID-2128-2.patch, qpid2128_1.patch, wcfbld.patch
>
>
> Transaction support is currently lacking from the WCF channel.
> As an initial implementation, full distributed transaction support from within .NET is proposed using the dtx AMQP classes and creating a plugin to the MSDTC infrastructure to drive recovery.
> Added performance from promotable transaction enlistment is deferred to a later date.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org


[jira] Updated: (QPID-2128) Transaction support for the WCF channel

Posted by "Steve Huston (JIRA)" <qp...@incubator.apache.org>.
     [ https://issues.apache.org/jira/browse/QPID-2128?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Steve Huston updated QPID-2128:
-------------------------------

         Priority: Critical  (was: Major)
    Fix Version/s: 0.6

This support is needed for 0.6. Patches for bugs identified in the code review are forthcoming.

> Transaction support for the WCF channel
> ---------------------------------------
>
>                 Key: QPID-2128
>                 URL: https://issues.apache.org/jira/browse/QPID-2128
>             Project: Qpid
>          Issue Type: New Feature
>          Components: WCF/C++ Client
>    Affects Versions: 0.6
>         Environment: Windows
>            Reporter: Cliff Jansen
>            Assignee: Steve Huston
>            Priority: Critical
>             Fix For: 0.6
>
>         Attachments: cppbld.patch, qpid2128_1.patch, wcfbld.patch
>
>
> Transaction support is currently lacking from the WCF channel.
> As an initial implementation, full distributed transaction support from within .NET is proposed using the dtx AMQP classes and creating a plugin to the MSDTC infrastructure to drive recovery.
> Added performance from promotable transaction enlistment is deferred to a later date.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org


[jira] Commented: (QPID-2128) Transaction support for the WCF channel

Posted by "Carl Trieloff (JIRA)" <qp...@incubator.apache.org>.
    [ https://issues.apache.org/jira/browse/QPID-2128?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12782175#action_12782175 ] 

Carl Trieloff commented on QPID-2128:
-------------------------------------



Thanks, that makes perfect sense, is there any reason not to just register it even if not used?

Carl.

> Transaction support for the WCF channel
> ---------------------------------------
>
>                 Key: QPID-2128
>                 URL: https://issues.apache.org/jira/browse/QPID-2128
>             Project: Qpid
>          Issue Type: New Feature
>          Components: WCF/C++ Client
>    Affects Versions: 0.6
>         Environment: Windows
>            Reporter: Cliff Jansen
>         Attachments: qpid2128_1.patch
>
>
> Transaction support is currently lacking from the WCF channel.
> As an initial implementation, full distributed transaction support from within .NET is proposed using the dtx AMQP classes and creating a plugin to the MSDTC infrastructure to drive recovery.
> Added performance from promotable transaction enlistment is deferred to a later date.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org


[jira] Commented: (QPID-2128) Transaction support for the WCF channel

Posted by "Cliff Jansen (JIRA)" <qp...@incubator.apache.org>.
    [ https://issues.apache.org/jira/browse/QPID-2128?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12790919#action_12790919 ] 

Cliff Jansen commented on QPID-2128:
------------------------------------

 Thank you very much for the detailed review.

> Some comments/questions

> Dtcplugin.cpp

> 188: should host be checked for empty string?

I don't think so.  It is only used internally and it would take
contorted programming to pass the reference parameter as a null value.

> 172: "i < len" should be "i < len-1" since the next line is referencing dsn[i+1]

That's a bug,  will fix.

> 324: the qpid SQL storage provider does not log indoubt transactions,
> so the recover will always get an empty list. If the qpid broker
> crashes after prepare, the transaction is rolled back by SQL. This may
> cause data inconsistency because other RMs may commit that transaction
> already. Need to work with Stephen to figure out if this is an issue
> in the storage provider implementation.

Wow.  Triple points for finding that merely from the Windows provider
code.  Will fix asap, thanks.

> 454: if the new operator throws due to low memory condition and the
> exception is handled in some other place, there could be deadlock
> because the critical section is not released.

Bug, will fix.

> 454 - 464: if you call open first and add the new resource manager to
> the map when it succeeds, there is no need to erase. Using an auto
> pointer here can make it easy to release the object on failures.

Good point, will rework.

> 461: what exception can be thrown by delete? The destructor of
> ResourceManager is empty.

The destructors of Qpid::Client::Session and Connection are recursively called.

> 490: if close fails, is xa_close going to retried?

I see your point.  The XA spec is silent on this and DTC documentation
only refers to XA.  Guarding against the possibility will be required.

> Overall the implementation in this file does not follow the qpid style
> very well. I would wrap the global variables and functions (line 91 to
> 190) into a DtcPlugin class to avoid global variables and functions as
> much as possible.

> At least for me, the use of the critical section rmLock is not easy to
> follow. Ideally thread synchronization should be encapsulated into
> classes (i.e. making the class thread-safe). The ResourceManager class
> can hold one critical section to synchronize communication with the
> qpid broker. The DtcPlugin class can use one critical section to
> synchronize access to all resource manager instances. The DtcPlugin
> class can implement the XA interface and the xa_switch entry methods
> (xa_open, xa_close, etc) can just call the DtcPlugin methods. Qpid
> implements a scoped lock/unlock (qpid.sys.ScopedLock) but I am not
> sure if you want to use it in the DTC plugin.

In the trade off of addressing people familiar with COM and MSDTC
versus people familiar with Qpid, I think the former makes the most
sense for code maintainability. The Qpid use is practically trivial
(if obscure), whereas the interaction with DTC is non-obvious and
needs to be bullet proof.  I would think there to be mainly scrutiny
of the COM calling and callback interfaces, so sticking with a style
that matches the related documentation and standard examples is
probably preferable.

Using the two tiered lock structure as you describe is a useful
enhancement if the DTC does parallel recovery to RM instances.

> AmqpConnection.cpp

> 110 - 118: this can be refactored into DtxResourceManager. The
> connection should not care what needs to be done for pending
> transactions on connection closing. It should notify the resource
> manager that the connection is closing, like what it does for
> sessions.

Agreed.  This is left over cruft from another fix, and effectively a
no-op.  Will remove.

> XaTransaction.cpp

> 66: use InterlockedIncrement/InterlockedDecrement so you don't need
> this lock

OK.

> 204: You can set the ref count to 1 in the constructor so you don't
> have to call AddRef() after creating each object.

I think that messes with traditional coding style, at least of the
sample code I've seen.  I think it is easier for Qpid contributors to
maintain this if the constructor is "normal" and the AddRef is an
additional (commented) step.

> AmqpSession.cpp

> 109: why not make this a method of XaTransaction?

This is a convenience casting routine, just needed by AmqpSession.  I
try to hide native C++ Qpid definitions from the managed .NET
interfaces.

> 322: remove

OK.

> In ConnectionClosed and NotifyClosed, why is it important to flush
> phase 0 (sending dtxEnd)? The broker is going to rollback all pending
> transactions of a session when it is closed. If a dtx involves
> multiple sessions, what is the behavior of closing one session before
> commit?

Unfortunately, there is no way to know when a broker will execute a
dtxEnd other than waiting for the command status completion.  The
dtxEnd can precede the prepare on the wire, but be processed
afterwards on the broker.  The broker will kill the control session if
it sees out of order on its end.  Worse, if the session tears down
from an async close, you have no event to wait for to indicate the
broker has done it's clean-up work.

> DtxResourceManager.cpp

> 220-227: this method is named GetXaTransaction but internally we
> create a new resource manager for that connection. I would refactor
> this method into two methods: GetResourceMananger and then
> GetXaTransaction from that resource manager.

That has the disadvantage that anyone who wants to use the object
directly has to guard against async TmDown with try/catch blocks and
reacquire, or else the singleton-per-broker has to have a split brain
to complete old pending transactions while accepting new ones.  The
static method hides all that and is very fast in the "sunny day"
scenarios.

> 233: this method can be combined with the previous one for the
> refactoring mentioned above.

> 214: InternalGetXaTransaction returns nullptr only during TmDown. 
> In that case do we need to create the RM?

In the case of a long running application, lazily creating a new RM as
necessary allows for a DTC restart.

> 270: ideally the resource manager should manage the state of all
> transactions in response to events, e.g. connection close. It seems a
> bit weird for a connection to get the pending transactions and perform
> actions on each transaction.

Quite right.  Will fix.

> Inputlink.cpp

> 141: does Subscription automatically call cancel() in its destructor
> if the subscription is active?

It appears not, this section should be fixed.


Thanks again for taking such a close look.


> Transaction support for the WCF channel
> ---------------------------------------
>
>                 Key: QPID-2128
>                 URL: https://issues.apache.org/jira/browse/QPID-2128
>             Project: Qpid
>          Issue Type: New Feature
>          Components: WCF/C++ Client
>    Affects Versions: 0.6
>         Environment: Windows
>            Reporter: Cliff Jansen
>         Attachments: cppbld.patch, qpid2128_1.patch, wcfbld.patch
>
>
> Transaction support is currently lacking from the WCF channel.
> As an initial implementation, full distributed transaction support from within .NET is proposed using the dtx AMQP classes and creating a plugin to the MSDTC infrastructure to drive recovery.
> Added performance from promotable transaction enlistment is deferred to a later date.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org


[jira] Commented: (QPID-2128) Transaction support for the WCF channel

Posted by "Xin Chen (JIRA)" <qp...@incubator.apache.org>.
    [ https://issues.apache.org/jira/browse/QPID-2128?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12790496#action_12790496 ] 

Xin Chen commented on QPID-2128:
--------------------------------

Some comments/questions

Dtcplugin.cpp

188: should host be checked for empty string?

172: "i < len" should be "i < len-1" since the next line is referencing dsn[i+1]

324: the qpid SQL storage provider does not log indoubt transactions, so the recover will always get an empty list. If the qpid broker crashes after prepare, the transaction is rolled back by SQL. This may cause data inconsistency because other RMs may commit that transaction already. Need to work with Stephen to figure out if this is an issue in the storage provider implementation.

454: if the new operator throws due to low memory condition and the exception is handled in some other place, there could be deadlock because the critical section is not released.

454 - 464: if you call open first and add the new resource manager to the map when it succeeds, there is no need to erase. Using an auto pointer here can make it easy to release the object on failures.

461: what exception can be thrown by delete? The destructor of ResourceManager is empty. 

490: if close fails, is xa_close going to retried?

Overall the implementation in this file does not follow the qpid style very well. I would wrap the global variables and functions (line 91 to 190) into a DtcPlugin class to avoid global variables and functions as much as possible. 

At least for me, the use of the critical section rmLock is not easy to follow. Ideally thread synchronization should be encapsulated into classes (i.e. making the class thread-safe). The ResourceManager class can hold one critical section to synchronize communication with the qpid broker. The DtcPlugin class can use one critical section to synchronize access to all resource manager instances. The DtcPlugin class can implement the XA interface and the xa_switch entry methods (xa_open, xa_close, etc) can just call the DtcPlugin methods. Qpid implements a scoped lock/unlock (qpid.sys.ScopedLock) but I am not sure if you want to use it in the DTC plugin.


AmqpConnection.cpp

110 - 118: this can be refactored into DtxResourceManager. The connection should not care what needs to be done for pending transactions on connection closing. It should notify the resource manager that the connection is closing, like what it does for sessions.

XaTransaction.cpp

66: use InterlockedIncrement/InterlockedDecrement so you don't need this lock

204: You can set the ref count to 1 in the constructor so you don't have to call AddRef() after creating each object.

AmqpSession.cpp

109: why not make this a method of XaTransaction?

322: remove

In ConnectionClosed and NotifyClosed, why is it important to flush phase 0 (sending dtxEnd)? The broker is going to rollback all pending transactions of a session when it is closed. If a dtx involves multiple sessions, what is the behavior of closing one session before commit?

DtxResourceManager.cpp

220-227: this method is named GetXaTransaction but internally we create a new resource manager for that connection. I would refactor this method into two methods: GetResourceMananger and then GetXaTransaction from that resource manager.

233: this method can be combined with the previous one for the refactoring mentioned above.

214: InternalGetXaTransaction returns nullptr only during TmDown. In that case do we need to create the RM?

270: ideally the resource manager should manage the state of all transactions in response to events, e.g. connection close. It seems a bit weird for a connection to get the pending transactions and perform actions on each transaction.

Inputlink.cpp

141: does Subscription automatically call cancel() in its destructor if the subscription is active?



> Transaction support for the WCF channel
> ---------------------------------------
>
>                 Key: QPID-2128
>                 URL: https://issues.apache.org/jira/browse/QPID-2128
>             Project: Qpid
>          Issue Type: New Feature
>          Components: WCF/C++ Client
>    Affects Versions: 0.6
>         Environment: Windows
>            Reporter: Cliff Jansen
>         Attachments: cppbld.patch, qpid2128_1.patch, wcfbld.patch
>
>
> Transaction support is currently lacking from the WCF channel.
> As an initial implementation, full distributed transaction support from within .NET is proposed using the dtx AMQP classes and creating a plugin to the MSDTC infrastructure to drive recovery.
> Added performance from promotable transaction enlistment is deferred to a later date.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org


[jira] Commented: (QPID-2128) Transaction support for the WCF channel

Posted by "Carl Trieloff (JIRA)" <qp...@incubator.apache.org>.
    [ https://issues.apache.org/jira/browse/QPID-2128?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12781918#action_12781918 ] 

Carl Trieloff commented on QPID-2128:
-------------------------------------


A little unrelated question to the patch, how will the packaging work around this this. Will we include it in the base Windows client, or will it be installed / layered on, or will it still behave if MSDTC is not installed?

Carl.

> Transaction support for the WCF channel
> ---------------------------------------
>
>                 Key: QPID-2128
>                 URL: https://issues.apache.org/jira/browse/QPID-2128
>             Project: Qpid
>          Issue Type: New Feature
>          Components: WCF/C++ Client
>    Affects Versions: 0.6
>         Environment: Windows
>            Reporter: Cliff Jansen
>         Attachments: qpid2128_1.patch
>
>
> Transaction support is currently lacking from the WCF channel.
> As an initial implementation, full distributed transaction support from within .NET is proposed using the dtx AMQP classes and creating a plugin to the MSDTC infrastructure to drive recovery.
> Added performance from promotable transaction enlistment is deferred to a later date.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org


[jira] Resolved: (QPID-2128) Transaction support for the WCF channel

Posted by "Steve Huston (JIRA)" <qp...@incubator.apache.org>.
     [ https://issues.apache.org/jira/browse/QPID-2128?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Steve Huston resolved QPID-2128.
--------------------------------

    Resolution: Fixed

Patches QPID-2128-2.patch, cppbld.patch and interop.tx.patch applied to trunk r891783.

> Transaction support for the WCF channel
> ---------------------------------------
>
>                 Key: QPID-2128
>                 URL: https://issues.apache.org/jira/browse/QPID-2128
>             Project: Qpid
>          Issue Type: New Feature
>          Components: WCF/C++ Client
>    Affects Versions: 0.6
>         Environment: Windows
>            Reporter: Cliff Jansen
>            Assignee: Steve Huston
>            Priority: Critical
>             Fix For: 0.6
>
>         Attachments: cppbld.patch, interop.tx.patch, QPID-2128-2.patch, qpid2128_1.patch, wcfbld.patch
>
>
> Transaction support is currently lacking from the WCF channel.
> As an initial implementation, full distributed transaction support from within .NET is proposed using the dtx AMQP classes and creating a plugin to the MSDTC infrastructure to drive recovery.
> Added performance from promotable transaction enlistment is deferred to a later date.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org


[jira] Updated: (QPID-2128) Transaction support for the WCF channel

Posted by "Cliff Jansen (JIRA)" <qp...@incubator.apache.org>.
     [ https://issues.apache.org/jira/browse/QPID-2128?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Cliff Jansen updated QPID-2128:
-------------------------------

    Attachment: interop.tx.patch

I'm very sorry Steve.

Please revert src/Apache/Qpid/Interop/Interop.vcproj and apply this instead.

> Transaction support for the WCF channel
> ---------------------------------------
>
>                 Key: QPID-2128
>                 URL: https://issues.apache.org/jira/browse/QPID-2128
>             Project: Qpid
>          Issue Type: New Feature
>          Components: WCF/C++ Client
>    Affects Versions: 0.6
>         Environment: Windows
>            Reporter: Cliff Jansen
>            Assignee: Steve Huston
>            Priority: Critical
>             Fix For: 0.6
>
>         Attachments: cppbld.patch, interop.tx.patch, QPID-2128-2.patch, qpid2128_1.patch, wcfbld.patch
>
>
> Transaction support is currently lacking from the WCF channel.
> As an initial implementation, full distributed transaction support from within .NET is proposed using the dtx AMQP classes and creating a plugin to the MSDTC infrastructure to drive recovery.
> Added performance from promotable transaction enlistment is deferred to a later date.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org


[jira] Updated: (QPID-2128) Transaction support for the WCF channel

Posted by "Cliff Jansen (JIRA)" <qp...@incubator.apache.org>.
     [ https://issues.apache.org/jira/browse/QPID-2128?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Cliff Jansen updated QPID-2128:
-------------------------------

    Attachment: QPID-2128-2.patch

Incorporates Xin's suggestions.

> Transaction support for the WCF channel
> ---------------------------------------
>
>                 Key: QPID-2128
>                 URL: https://issues.apache.org/jira/browse/QPID-2128
>             Project: Qpid
>          Issue Type: New Feature
>          Components: WCF/C++ Client
>    Affects Versions: 0.6
>         Environment: Windows
>            Reporter: Cliff Jansen
>            Assignee: Steve Huston
>            Priority: Critical
>             Fix For: 0.6
>
>         Attachments: cppbld.patch, QPID-2128-2.patch, qpid2128_1.patch, wcfbld.patch
>
>
> Transaction support is currently lacking from the WCF channel.
> As an initial implementation, full distributed transaction support from within .NET is proposed using the dtx AMQP classes and creating a plugin to the MSDTC infrastructure to drive recovery.
> Added performance from promotable transaction enlistment is deferred to a later date.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org


[jira] Updated: (QPID-2128) Transaction support for the WCF channel

Posted by "Cliff Jansen (JIRA)" <qp...@incubator.apache.org>.
     [ https://issues.apache.org/jira/browse/QPID-2128?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Cliff Jansen updated QPID-2128:
-------------------------------

    Attachment: qpid2128_1.patch

This patch provides distributed transaction support for the C++ based
WCF channel on Windows.

It basically consists of two new classes in the Interop DLL

  XaTransaction tracks the sessions that have enlisted in a particular
  System.Transaction and provides the COM glue to manage the 2PC
  stages with the Microsoft Distributed Transaction Coordinator.

  DtxResourceManager is responsible for creating XaTransactions as
  needed, maintaining the control session with the broker, and
  initiating and terminating the handshake with MSDTC.

and a DtcPlugin module whose purpose is to provide (solely) the
recovery functionality of an XA resource manager.  This latter DLL
runs in the process space of the MSDTC service itself.

The nature of this design is that resource manager components do not
maintain state between crashes.  The MSDTC maintains a log of broker
connections and potential in-doubt transactions.  It is responsible
for initiating recovery as needed.  The AMQP broker maintains its own
persistent list of transactions that are currently in the prepared
state.  Those combined logs are sufficient to ensure recovery.

1PC optimization is supported.  Promotable transactions cannot be
supported with this existing design, but could be with the
introduction of an additional log file on the client machine.


The AmqpSession class has been enhanced to provide the needed dtx
methods in managed space.

The remaining changes mainly allow for synchronizing the multiple
active sessions.  Connections wait on close for outstanding
transactions to complete.  Dtx "join" operations have to wait "long
enough" to be sure the broker sees the initial "start" (on another
session or connection) first.  A dtx "prepare" or 1PC must wait for
all dtx "ends" to be processed by the broker (internally referred to
as a "Phase 0 flush").

A set of NUnit tests for all this are coming real soon now.

Cliff


> Transaction support for the WCF channel
> ---------------------------------------
>
>                 Key: QPID-2128
>                 URL: https://issues.apache.org/jira/browse/QPID-2128
>             Project: Qpid
>          Issue Type: New Feature
>          Components: WCF/C++ Client
>    Affects Versions: 0.6
>         Environment: Windows
>            Reporter: Cliff Jansen
>         Attachments: qpid2128_1.patch
>
>
> Transaction support is currently lacking from the WCF channel.
> As an initial implementation, full distributed transaction support from within .NET is proposed using the dtx AMQP classes and creating a plugin to the MSDTC infrastructure to drive recovery.
> Added performance from promotable transaction enlistment is deferred to a later date.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org