The database is setup to use the mySQL MyISAM engine, which does not support transactions. The data billing and data package purchase UI code both use a read->compute->update pattern, which could result in data corruption without transaction semantics. This would require a timing collision which we might not see for a while with small scale networks, but will eventually happen.
Potential solutions could be looking at a different database engine (InnoDB) and using transaction semantics when interacting with it, or migrating to a different database.
The database is setup to use the mySQL MyISAM engine, which does not support transactions. The data billing and data package purchase UI code both use a read->compute->update pattern, which could result in data corruption without transaction semantics. This would require a timing collision which we might not see for a while with small scale networks, but will eventually happen.
Potential solutions could be looking at a different database engine (InnoDB) and using transaction semantics when interacting with it, or migrating to a different database.