Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Staging -> main v3.2.3 #677

Merged
merged 1 commit into from
Jul 29, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions AEPCore.podspec
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = "AEPCore"
s.version = "3.2.2"
s.version = "3.2.3"
s.summary = "Core library for Adobe Experience Platform Mobile SDK. Written and maintained by Adobe."
s.description = <<-DESC
The core library provides the foundation for the Adobe Experience Platform SDK. Having the core library installed is a pre-requisite for any other Adobe Experience Platform SDK extension to work.
Expand All @@ -17,7 +17,7 @@ Pod::Spec.new do |s|
s.pod_target_xcconfig = { 'BUILD_LIBRARY_FOR_DISTRIBUTION' => 'YES' }

s.dependency 'AEPRulesEngine', '1.0.1'
s.dependency 'AEPServices', '3.2.2'
s.dependency 'AEPServices', '3.2.3'

s.source_files = 'AEPCore/Sources/**/*.swift'

Expand Down
28 changes: 14 additions & 14 deletions AEPCore.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -3498,7 +3498,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 3.2.2;
MARKETING_VERSION = 3.2.3;
PRODUCT_BUNDLE_IDENTIFIER = com.adobe.aep.core;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
Expand Down Expand Up @@ -3528,7 +3528,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 3.2.2;
MARKETING_VERSION = 3.2.3;
PRODUCT_BUNDLE_IDENTIFIER = com.adobe.aep.core;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
Expand Down Expand Up @@ -3602,7 +3602,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 3.2.2;
MARKETING_VERSION = 3.2.3;
PRODUCT_BUNDLE_IDENTIFIER = com.adobe.aep.signal;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
Expand Down Expand Up @@ -3630,7 +3630,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 3.2.2;
MARKETING_VERSION = 3.2.3;
PRODUCT_BUNDLE_IDENTIFIER = com.adobe.aep.signal;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
Expand Down Expand Up @@ -3697,7 +3697,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 3.2.2;
MARKETING_VERSION = 3.2.3;
PRODUCT_BUNDLE_IDENTIFIER = come.adobe.aep.services;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
Expand All @@ -3724,7 +3724,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 3.2.2;
MARKETING_VERSION = 3.2.3;
PRODUCT_BUNDLE_IDENTIFIER = come.adobe.aep.services;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
Expand Down Expand Up @@ -3844,7 +3844,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 3.2.2;
MARKETING_VERSION = 3.2.3;
PRODUCT_BUNDLE_IDENTIFIER = com.adobe.aep.AEPServicesMocks;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
Expand All @@ -3871,7 +3871,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 3.2.2;
MARKETING_VERSION = 3.2.3;
PRODUCT_BUNDLE_IDENTIFIER = com.adobe.aep.AEPServicesMocks;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
Expand All @@ -3897,7 +3897,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 3.2.2;
MARKETING_VERSION = 3.2.3;
PRODUCT_BUNDLE_IDENTIFIER = com.adobe.aep.lifecycle;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
Expand All @@ -3924,7 +3924,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 3.2.2;
MARKETING_VERSION = 3.2.3;
PRODUCT_BUNDLE_IDENTIFIER = com.adobe.aep.lifecycle;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
Expand Down Expand Up @@ -3993,7 +3993,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 3.2.2;
MARKETING_VERSION = 3.2.3;
PRODUCT_BUNDLE_IDENTIFIER = com.adobe.aep.identity;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
Expand All @@ -4020,7 +4020,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 3.2.2;
MARKETING_VERSION = 3.2.3;
PRODUCT_BUNDLE_IDENTIFIER = com.adobe.aep.identity;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
Expand Down Expand Up @@ -4089,7 +4089,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 3.2.2;
MARKETING_VERSION = 3.2.3;
PRODUCT_BUNDLE_IDENTIFIER = com.adobe.aep.AEPCoreMocks;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
Expand All @@ -4116,7 +4116,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 3.2.2;
MARKETING_VERSION = 3.2.3;
PRODUCT_BUNDLE_IDENTIFIER = com.adobe.aep.AEPCoreMocks;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
Expand Down
2 changes: 1 addition & 1 deletion AEPCore/Sources/configuration/ConfigurationConstants.swift
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import Foundation
struct ConfigurationConstants {
static let EXTENSION_NAME = "com.adobe.module.configuration"
static let FRIENDLY_NAME = "Configuration"
static let EXTENSION_VERSION = "3.2.2"
static let EXTENSION_VERSION = "3.2.3"
static let DATA_STORE_NAME = EXTENSION_NAME

static let CONFIG_URL_BASE = "https://assets.adobedtm.com/"
Expand Down
2 changes: 1 addition & 1 deletion AEPCore/Sources/core/CoreConstants.swift
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import Foundation

enum CoreConstants {
static let EXTENSION_NAME = "com.adobe.module.configuration"
static let EXTENSION_VERSION = "3.2.2"
static let EXTENSION_VERSION = "3.2.3"
static let DATA_STORE_NAME = EXTENSION_NAME

static let CONFIG_URL_BASE = "https://assets.adobedtm.com/"
Expand Down
2 changes: 1 addition & 1 deletion AEPCore/Sources/eventhub/EventHubConstants.swift
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ enum EventHubConstants {
static let XDM_STATE_CHANGE = "Shared state change (XDM)"
static let NAME = "com.adobe.module.eventhub"
static let FRIENDLY_NAME = "EventHub"
static let VERSION_NUMBER = "3.2.2"
static let VERSION_NUMBER = "3.2.3"

enum EventDataKeys {
static let VERSION = "version"
Expand Down
2 changes: 1 addition & 1 deletion AEPCore/Tests/MobileCoreTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,7 @@ class MobileCoreTests: XCTestCase {
"friendlyName" : "mockExtension"
},
"com.adobe.module.configuration" : {
"version" : "3.2.2",
"version" : "3.2.3",
"friendlyName" : "Configuration"
},
"com.adobe.mockExtensionTwo" : {
Expand Down
4 changes: 2 additions & 2 deletions AEPIdentity.podspec
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = "AEPIdentity"
s.version = "3.2.2"
s.version = "3.2.3"
s.summary = "Identity extension for Adobe Experience Platform Mobile SDK. Written and maintained by Adobe."
s.description = <<-DESC
The AEPIdentity extension provides APIs that allow use of the Visitor ID services in the Adobe Experience Cloud SDK.
Expand All @@ -17,6 +17,6 @@ Pod::Spec.new do |s|
s.swift_version = '5.1'
s.pod_target_xcconfig = { 'BUILD_LIBRARY_FOR_DISTRIBUTION' => 'YES' }

s.dependency 'AEPCore', '3.2.2'
s.dependency 'AEPCore', '3.2.3'

end
2 changes: 1 addition & 1 deletion AEPIdentity/Sources/IdentityConstants.swift
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import Foundation
enum IdentityConstants {
static let EXTENSION_NAME = "com.adobe.module.identity"
static let FRIENDLY_NAME = "Identity"
static let EXTENSION_VERSION = "3.2.2"
static let EXTENSION_VERSION = "3.2.3"
static let DATASTORE_NAME = EXTENSION_NAME

static let API_TIMEOUT = TimeInterval(0.5) // Get API requests timeout after half a second
Expand Down
Binary file modified AEPIntegrationTests/resources/rules_lifecycle.zip
Binary file not shown.
Binary file modified AEPIntegrationTests/resources/rules_pii.zip
Binary file not shown.
Binary file modified AEPIntegrationTests/resources/rules_signal.zip
Binary file not shown.
4 changes: 2 additions & 2 deletions AEPLifecycle.podspec
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = "AEPLifecycle"
s.version = "3.2.2"
s.version = "3.2.3"
s.summary = "Lifecycle extension for Adobe Experience Platform Mobile SDK. Written and maintained by Adobe."
s.description = <<-DESC
The AEPLifecycle extension is used to track application lifecycle including session metricss and device related data.
Expand All @@ -17,5 +17,5 @@ Pod::Spec.new do |s|
s.swift_version = '5.1'
s.pod_target_xcconfig = { 'BUILD_LIBRARY_FOR_DISTRIBUTION' => 'YES' }

s.dependency 'AEPCore', '3.2.2'
s.dependency 'AEPCore', '3.2.3'
end
2 changes: 1 addition & 1 deletion AEPLifecycle/Sources/LifecycleConstants.swift
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import Foundation
enum LifecycleConstants {
static let EXTENSION_NAME = "com.adobe.module.lifecycle"
static let FRIENDLY_NAME = "Lifecycle"
static let EXTENSION_VERSION = "3.2.2"
static let EXTENSION_VERSION = "3.2.3"
static let DATA_STORE_NAME = LifecycleConstants.EXTENSION_NAME

static let START = "start"
Expand Down
2 changes: 1 addition & 1 deletion AEPServices.podspec
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = "AEPServices"
s.version = "3.2.2"
s.version = "3.2.3"
s.summary = "Servcies library for Adobe Experience Platform Mobile SDK. Written and maintained by Adobe."
s.description = <<-DESC
The AEPServices library provides the platform services and utilities for the Adobe Experience Platform SDK. Having the services library installed is a pre-requisite for any other Adobe Experience Platform SDK extension to work.
Expand Down
3 changes: 2 additions & 1 deletion AEPServices/Sources/dataqueue/SQLiteDataQueue.swift
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,8 @@ class SQLiteDataQueue: DataQueue {
disconnect(database: connection)
}
let deleteRowStatement = """
DELETE FROM \(SQLiteDataQueue.TABLE_NAME) ORDER BY id ASC LIMIT \(n);
DELETE FROM \(SQLiteDataQueue.TABLE_NAME) WHERE id IN
(SELECT id from \(SQLiteDataQueue.TABLE_NAME) ORDER BY id ASC LIMIT \(n));
"""
guard SQLiteWrapper.execute(database: connection, sql: deleteRowStatement) else {
Log.warning(label: LOG_PREFIX, "Failed to delete oldest record from database: \(self.databaseName).")
Expand Down
26 changes: 20 additions & 6 deletions AEPServices/Sources/utility/hitprocessor/PersistentHitQueue.swift
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ public class PersistentHitQueue: HitQueuing {

private static let DEFAULT_RETRY_INTERVAL = TimeInterval(30)
private var suspended = true
private var isTaskScheduled = false
private let queue = DispatchQueue(label: "com.adobe.mobile.persistenthitqueue")

/// Creates a new `HitQueue` with the underlying `DataQueue` which is used to persist hits
Expand Down Expand Up @@ -60,19 +61,32 @@ public class PersistentHitQueue: HitQueuing {
/// A recursive function for processing hits, it will continue processing all the hits until none are left in the data queue
private func processNextHit() {
queue.async {
guard !self.suspended else { return }
guard let hit = self.dataQueue.peek() else { return } // nothing left in the queue, stop processing
guard !self.suspended, !self.isTaskScheduled else { return }

self.isTaskScheduled = true

guard let hit = self.dataQueue.peek() else {
self.isTaskScheduled = false
return
} // nothing left in the queue, stop processing

let semaphore = DispatchSemaphore(value: 0)
self.processor.processHit(entity: hit, completion: { [weak self] success in
if success {
// successful processing of hit, remove it from the queue, move to next hit
_ = self?.dataQueue.remove()

self?.processNextHit()
// successful processing of hit
// attempt to remove it from the queue and process next hit if successful
if self?.dataQueue.remove() ?? false {
self?.isTaskScheduled = false
self?.processNextHit()
} else {
// deleting the hit from the database failed
// need to delete the database to try and recover
Log.warning(label: "PersistentHitQueue", "An unexpected error occurred while attempting to delete a record from the database. Data processing will be paused.")
}
} else {
// processing hit failed, leave it in the queue, retry after the retry interval
self?.queue.asyncAfter(deadline: .now() + (self?.processor.retryInterval(for: hit) ?? PersistentHitQueue.DEFAULT_RETRY_INTERVAL)) {
self?.isTaskScheduled = false
self?.processNextHit()
}
}
Expand Down
Loading