forked from Azure/azure-storage-net
-
Notifications
You must be signed in to change notification settings - Fork 0
/
BreakingChanges.txt
134 lines (105 loc) · 12 KB
/
BreakingChanges.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
Tracking Breaking Changes since 7.0
- All: (Desktop) Updated the desktop library to target .Net 4.5.0
- Queues: Add Message now modifies the PopReceipt, Id, NextVisibleTime, InsertionTime, and ExpirationTime properties of its CloudQueueMessage parameter. The message can then be passed to the UpdateMessage and DeleteMessage APIs.
- Blobs/Files: Populate content MD5 for range gets on Blobs and Files.
- Blobs: BlobContainerPublicAccess enum has a new value "Unknown".
- All: Decoupled StorageExtendedErrorInformation methods using OData to prevent the dependency from loading for Blobs, Queues, and Files.
- Table: OData methods used to process the Extended Error Information for Table operations have now moved to its own static utility class - ODataErrorHelper.
- All: Added logging for the ExtendedErrorInformation 'ErrorMessage' attribute via StorageException ToString() method.
- Files: Changed Exists() calls on CloudFileDirectory objects to now populate metadata. This was already being done for CloudFiles and CloudFileShares.
- Blobs: Change boundary checks for lease duration to be in line with those used in the REST endpoints.
- All: (WinRT) Removed the static CloudStorageAccount.Create method. The instance level consructor should be used instead.
- Blobs: Removed the IAsyncOperation* overloads for GetPageRangesDiffAsync APIs.
- Table: (WinRT/NetCore) Unsealed the TableQuery class.
- All: Added the 'virtual' qualifier to Get*Reference APIs and unsealed Blob/Container/ShareResultSegment classes.
- All: Added the 'virtual' qualifier to numerous service call APIs.
- Tables: Updated the access modifiers of "Entity" and "OperationType" properties of the TableOperation class from internal to public.
- Tables: The ServerTimeout for the table service is enforced by the Table Serivce (previously disregarded).
- Blobs: Removed the IAsyncOperation* overloads for GetPageRangesDiffAsync APIs.
- Tables: Numerous changes in Table Service error codes and messages.
- Blobs: Improved numerous Blob Service error codes and messages.
- Blobs: Fixed error for AcquireLease on non-existent container.
- PageBlobs: Fixed error response for GetPageRangesDiff.
- Blobs: Update in "If-None-Match: *" pre-condition behavior to fail for reads(previously disregarded by the service).
Tracking Breaking Changes since 6.0
- All: Support for 2015-07-08 REST version. Please see our REST API documentation and blogs for information about the related added features. If you are using the Storage Emulator, please update to Emulator version 4.3.
- All (WinRT): All apis now return Task objects instead of IAsync* objects. Please see our blog post for more info.
- All: TestConfigurations.xml has been deleted and added to the .gitignore file to keep users from accidentally leaking their credentials. To continue running tests, simply add the same file back after you get the latest code.
- All: Virtualized all service call APIs and unsealed their classes.
- All: Updated the UserAgent string to match the Azure Storage standard.
- All: The dnx and net target frameworks have been unified, and DNXCore target framework has been renamed to Dotnet5.4. All DNX4.5.1 projects will take a dependency on the regular Windows Desktop dll.
- All: Windows Runtime no longer uses WrappedStorageExceptions or HResults. Catch StorageException and check HTTP status code instead.
- All: SetServiceProperties APIs no longer instantiates Logging, HourMetrics, MinuteMetrics, or Cors instance variables. New LoggingProperties, MetricsProperties, and CorsProperties objects will need to be set for those variables before they can be assigned.
- All: LoggingProperties and MetricsProperties Version now defaults to "1.0" or Constants.AnalyticsConstants.MetricsVersionV1 or LoggingVersionV1.
- All: Removed deprecated SharedKeyLiteAuthenticationHandler, use SharedKeyAuthenticationHandler instead.
- All: Removed deprecated request options setters on the *Client class object in favor of setting request options on Client's DefaultRequestOptions object.
- All: When creating a SAS token with a non-null SharedAccessProtocol, only valid enum values are permitted. All other values will now throw an ArgumentException.
- Blobs: Removed deprecated (Begin/End)StartCopyFromBlob(Async) APIs in favor of using (Begin/End)StartCopy(Async) APIs.
- Blobs: Removed deprecated GetSubdirectoryReference API in favor of GetDirectoryReference.
- Blobs: Removed FileMode parameter for UploadFromFile* and AppendFromFile* APIs since there is only 1 valid option (FileMode.Open).
- Blobs: When downloading blob to local file fails, file created for download will be cleaned up.
- Blobs: proposedLeaseId for minimum AcquireLease API overloads defaults to null.
- Tables: Removed deprecated AtomPub payloadFormat support.
- Tables: Fixed a bug in table batch where storage exceptions resulted in operation contexts with incorrect HttpStatusMessage.
- Tables: Batching validation was added for batch sizes exceeding 100 operations.
- Tables: Batching validation was added for null partition keys and row keys.
- Tables: Removed deprecated overloads for Table.Retrieve APIs.
- Files: When downloading file to local system file fails, file created for download will be cleaned up.
- Queues: Removed deprecated EndBeginClear API in favor of EndClear.
Tracking Breaking Changes since 5.0
- All: Certain error messages returned by the Azure Storage Services have changed in the 2015-04-05 service version.
- All: Removed deprecated Shared Access Signature methods that take version as a parameter.
- Tables: Altered default settings for echoContent and payloadFormat. AtomPub payloadFormat is now obsolete.
- Tables: Changed the client error message for batch transactions to be more clear.
Tracking Breaking Changes since 4.0
- All: Removed dependency on Microsoft.WindowsAzure.ConfigurationManager.
- All: Deprecated the overload for GetSharedAccessSignature that takes a SAS version because the SAS tokens generated using the current version work fine with old libraries.
- All: Updated the error message for the error that is thrown for having more than 5 shared access policy identifiers to include shares.
- All: Changed behavior to stop stripping out query parameters passed in with the resource URI. Some query parameters such as comp, restype, snapshot and api-version will still be removed.
- Blobs: MultiBufferMemoryStream objects passed as argument to upload methods are not disposed by the client library.
- Blobs: ListBlobs* can return an additional type called CloudAppendBlob in the enumeration.
- Blobs: Deprecated StartCopyFromBlob() using the Obsolete attribute. Use StartCopy() instead.
- Blobs: CreateCloudBlobClient does not throw an exception when the credentials are null to support anonymous access.
- Tables: Removed Serialized attribute and ISerializable implementation from TableEntity. Implement ITableEntity for your custom entities if you need either.
Tracking Breaking Changes since 3.0
- Removed the generic query filter generation helper methods from TableQueryGeneric.Common.cs. The Correct usage is to leverage the methods exposed on the non-generic TableQuery class.
- Renamed CloudBlobDirectory.GetSubdirectoryReference to CloudBlobDirectory.GetDirectoryReference.
- Get{BlockBlob|PageBlob|Directory|Container|Queue|Table}Reference always treat the string parameter as a relative address. Specifically for containers, queues and tables, the names should not be preceded or followed by any ‘/’ characters and should follow the naming guidelines on MSDN.
- ServerTimeout is set to null by default. Therefore, "timeout" query parameter will not be sent to the server if ServerTimeout is not set by the user.
- CloudBlobDirectory.GetDirectoryReference throws an ArgumentException if the directory name is empty.
- Renamed DoesServiceRequest to DoesServiceRequestAttribute.
- Deprecated the WCF DataServices Table implementation namespace via the Obsolete attribute.
- No longer shipping the WindowsAzure.Storage.Table-Preview package or the WindowsAzure.Storage-Preview package; everything is included in the WindowsAzure.Storage package.
- Windows RT classes "TableBatchOperationExtensions", "TableQueryExtensions", and "CloudTableExtensions" no longer exist; functionality has been moved to the "TableBatchOperation", "TableQuery", and "CloudTable" classes. If the methods were being used as extention methods, this should require no code change, but it will require a recompile of dependant code.
- Windows RT class "TableOperationFactory" no longer exists; functionality has been moved to the "TableOperation" class.
- All Windows RT code is in a single DLL (no longer creating the winmd).
- Deprecated service client request options properties via the Obsolete attribute.
- Previously non-nullable deprecated Service Client configuration properties (i.e. Blob: ParallelOperationThreadCount, SingleBlobUploadThresholdInBytes, LocationMode; Queue: LocationMode; Table: PayloadFormat, LocationMode) are nullable. MaximumExecutionTime and ServerTimeout are able to be set to zero.
- Removed the CloudQueueClient(Uri) and CloudTableClient(Uri) constructors from CloudQueueClient.Common.cs and CloudTableClient.Common.cs respectively. Queues and Tables don't support anonymous access. Therefore the correct usage is to use the CloudQueueClient(Uri, StorageCredentials) and CloudTableClient(Uri, StorageCredentials) constructors instead.
- Whitespace only metadata values are no longer accepted.
- Deprecated SharedKeyLiteAuthenticationHandler via the Obsolete attribute as it was just an empty wrapper on SharedKeyAuthenticationHandler.
Tracking Breaking Changes since 2.1 RTM
- When DataServiceContext is used to execute table operations, response received event on OperationContext is no longer fired.
- Inserts in table operations no longer echo content. This will cause the resulting HTTP status code on the TableResult for successful inserts to be 204 (no-content) rather than 201 (Created). Echo content can be re-enabled by using the insert(TableEntity, boolean) method and specifying true.
- QueueContinuationToken is moved to Queue namespace(Microsoft.WindowsAzure.Storage.Queue).
- ContinuationTokens are written with an additional <ContinuationToken> element enclosing them if WriteXml() method is used - ReadXml() parser is updated to handle this.
- Only the ServiceProperties that are provided are changed. In previous REST versions ommitting a properties section such as Metrics would result in those settings being removed by the service.
- Please refer to the blog post about Breaking Changes on the server side in the new storage protocol version(2013-08-15) here:
http://blogs.msdn.com/b/windowsazurestorage/archive/2013/11/23/windows-azure-storage-breaking-changes-for-windows-azure-tables-november-2013.aspx.
Additionally, the following error messages have changed in the Table Service:
Entity over 1MB –
Error message previously - The entity is larger than allowed by the Table Service.
Error message now - The entity is larger than the maximum allowed size (1MB).
Batch over 4MB -
Error message previously - The content length for the requested operation has exceeded the limit.
Error message now - The content length for the requested operation has exceeded the limit (4MB).
Property name over 255 chars –
Error message previously – The property name exceeds the maximum allowed length.
Error message now - The property name exceeds the maximum allowed length (255).
Tracking Breaking Changes since 2.0
- maxResults while listing queues in nullable now.
- The BlobTypeMismatch and ExtendedErrorUnavailable error strings have changed in SR.cs.
- OperationContext.RequestResults does not expose a setter anymore.
- Renamed CloudQueue.EndBeginClear(IAsyncResult) to CloudQueue.EndClear(IAsyncResult).
- Sync and Async blob upload methods (BeginPutBlock, PutBlock, BeginUploadFromStream, UploadFromStream, BeginWritePages and WritePages) now throw InvalidOperationException(SR.StreamLengthError) instead of ArgumentOutOfRangeException("stream") when the length of the stream exceeds the permitted length.
- The StorageException thrown when an operation is cancelled now includes an OperationCanceledException as its inner exception.