oTree Forum >

Waiting for player even though all players are present

#1 by Trontatuma

I have this very strange problem that players are waiting for another player even though all players have joined the game (see attachment).

I am assigning players randomly to one of three markets (see below). The error must be there but I have no idea why. Anybody has had similar problems?


def creating_session(subsession: Subsession):
    players_in_all_groups = []
    for group in subsession.get_groups():
        players_in_all_groups.extend(group.get_players())

    # group matrix numbers are based on player.id_in_subsession
    players_in_large_market_1 = [p.id_in_subsession for p in players_in_all_groups if
                                 p.participant.vars['large_market_1'] is True or p.participant.vars[
                                     'large_market_1'] is None]
    players_in_large_market_2 = [p.id_in_subsession for p in players_in_all_groups if
                                 p.participant.vars['large_market_2'] is True or p.participant.vars[
                                     'large_market_2'] is None]
    players_in_small_market = [p.id_in_subsession for p in players_in_all_groups if
                               p.participant.vars['large_market'] is False]

    matrix = []
    if players_in_large_market_1 is not []:
        matrix.append(players_in_large_market_1)
    if players_in_large_market_2 is not []:
        matrix.append(players_in_large_market_2)
    if players_in_small_market is not []:
        matrix.append(players_in_small_market)

    #print(matrix)
    subsession.set_group_matrix(matrix)
    print(subsession.get_group_matrix())

    session = subsession.session
    for group in subsession.get_groups():
        if group.get_players()[0].participant.vars['large_market_1'] is True:
            group.marketID = 1
            group.large_market = True
            group.large_market_1 = True
            group.large_market_2 = False
            group.players_in_group = session.config['size_large_market']
            group.employers_in_group = session.config['num_employers_large_market']
            group.num_unmatched_workers = group.players_in_group - session.config['num_employers_large_market']
            group.num_unmatched_jobs = session.config['num_employers_large_market'] * 2
        elif group.get_players()[0].participant.vars['large_market_2'] is True:
            group.marketID = 2
            group.large_market = True
            group.large_market_1 = False
            group.large_market_2 = True
            group.players_in_group = session.config['size_large_market']
            group.employers_in_group = session.config['num_employers_large_market']
            group.num_unmatched_workers = group.players_in_group - session.config['num_employers_large_market']
            group.num_unmatched_jobs = session.config['num_employers_large_market'] * 2
        else:
            group.marketID = 3
            group.large_market = False
            group.large_market_1 = False
            group.large_market_2 = False
            group.players_in_group = session.config['size_small_market']
            group.employers_in_group = session.config['num_employers_small_market']
            group.num_unmatched_workers = group.players_in_group - session.config['num_employers_small_market']
            group.num_unmatched_jobs = session.config['num_employers_small_market'] * 2

#2 by Trontatuma

I am catching this error in Senty but am not sure why.








Stack Trace
ProgrammingError

(psycopg2.errors.DuplicateTable) relation "otree_chatmessage" already exists

[SQL: 
CREATE TABLE otree_chatmessage (
    id SERIAL NOT NULL, 
    channel VARCHAR(255), 
    participant_id INTEGER, 
    nickname VARCHAR(255), 
    body TEXT, 
    timestamp FLOAT, 
    PRIMARY KEY (id), 
    FOREIGN KEY(participant_id) REFERENCES otree_participant (id) ON DELETE CASCADE
)

]
(Background on this error at: http://sqlalche.me/e/13/f405)

mechanismexcepthook
handledfalse

    Crashed in non-app:
    sqlalchemy/engine/default.py in do_execute

otree in <module> at line 8
In App
import re
import sys
from otree.main import execute_from_command_line
if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(execute_from_command_line())
Add the GitHub or GitLab integration to jump straight to your source code

        __annotations__    

        {}

        __builtins__    

        <module 'builtins' (built-in)>

        __cached__    

        None

        __doc__    

        None

        __file__    

        '/app/.heroku/python/bin/otree'

        __loader__    

        <_frozen_importlib_external.SourceFileLoader object at 0x7fb402859c10>

        __name__    

        '__main__'

        __package__    

        None

        __spec__    

        None

        re    

        <module 're' from '/app/.heroku/python/lib/python3.9/re.py'>

DuplicateTable

relation "otree_chatmessage" already exists

#3 by Trontatuma

And in papertail, I am now seeing a lot of these kind of error messages

 Sep 19 05:20:15 gefinal app/postgres.9200 [DATABASE] [47-1]  sql_error_code = 00000 time_ms = "2023-09-19 12:20:14.511 UTC" pid="895" proc_start_time="2023-09-19 12:20:13 UTC" session_id="650991fd.37f" vtid="10/868" tid="2597" log_line="40" database="dc8m2uftlqpn12" connection_source="52.211.112.45(53300)" user="u54gqrd9soer07" application_name="[unknown]" LOG:  statement:
  Sep 19 05:20:15 gefinal app/postgres.9200 [DATABASE] [47-2]     CREATE TABLE otree_taskqueuemessage (
Sep 19 05:20:15 gefinal app/postgres.9200 [DATABASE] [47-3]         id SERIAL NOT NULL,
Sep 19 05:20:15 gefinal app/postgres.9200 [DATABASE] [47-4]         method VARCHAR(50),
Sep 19 05:20:15 gefinal app/postgres.9200 [DATABASE] [47-5]         kwargs_json TEXT,
Sep 19 05:20:15 gefinal app/postgres.9200 [DATABASE] [47-6]         epoch_time INTEGER,
Sep 19 05:20:15 gefinal app/postgres.9200 [DATABASE] [47-7]         PRIMARY KEY (id)
Sep 19 05:20:15 gefinal app/postgres.9200 [DATABASE] [47-8]     )

#4 by Trontatuma

This only happens when deploying on Heroku it seems

Write a reply

Set forum username