Skip to content

Using a transaction in a session makes unity editor non responsive when attempting to start next session #783

Closed
@christianmrswordsmith

Description

@christianmrswordsmith

[REQUIRED] Please fill in the following fields:

  • Unity editor version: 2019.4.9f1
  • Firebase Unity SDK version: 6.15.2
  • Source you installed the SDK: Unity Package Manager (.unitypackage or Unity Package Manager)
  • Problematic Firebase Component: Cloud Firestore for Firebase (Auth, Database, etc.)
  • Other Firebase Components in use: ____ (Auth, Database, etc.)
  • Additional SDKs you are using: _____ (Facebook, AdMob, etc.)
  • Platform you are using the Unity editor on: Windows 10 (Mac, Windows, or Linux)
  • Platform you are targeting: iOS, Android (iOS, Android, and/or desktop)
  • Scripting Runtime: IL2CPP (Mono, and/or IL2CPP)

[REQUIRED] Please describe the issue here:

Unity Editor becomes non responsive on play if a Firestore transaction was made in the previous session.

Steps to reproduce:

Have you been able to reproduce this issue with just the Firebase Unity quickstarts (this GitHub project)?
Haven't tried yet.

What's the issue repro rate? (eg 100%, 1/5 etc)
100%

What happened? How can we make the problem occur?
Editor becomes non responsive.
Press play
Run code that makes a transaction
Press stop

Press play
Unity editor is now stuck

Relevant Code:

DocumentReference accountDocumentRef =
				_firestoreClient.Db.Document(_documentPath);

			DocumentReference profileStateDocRef =
				_firestoreClient.Db.Document(
					$"{_profileStatesCollection}/{_userId}_{profileStateId}");

			bool transactionResult = await _firestoreClient.Db.RunTransactionAsync(async transaction =>
			{
				DocumentSnapshot snapshot = await transaction.GetSnapshotAsync(accountDocumentRef);
				AccountDocument accountDocument = snapshot.ConvertTo<AccountDocument>();

				if (accountDocument.ProfileMeta.ContainsKey(slotId.ToString())) return false;

				accountDocument.ProfileMeta.Add(slotId.ToString(),
					new ProfileStateMetaData(profileStateId, childName, ProfileStateDocument.kCurrentVersion,
						_profileStatesCollection));
				transaction.Set(accountDocumentRef, accountDocument);
				transaction.Set(profileStateDocRef, profileState);

				return true;


			});
			_accountData = await GetAccountData();
			if (!transactionResult) return null;
			return await GetProfileStateController(profileStateId);*/

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions