my thread of questions about tvengine3 api (1 Viewer)

binary64

Portal Pro
July 30, 2006
105
1
Machine "Master":
TV-Server Version: rev 19010
Database: MySQL Community 5.0.51b
Operating System: Windows XP Pro SP3 with updated psisdecd.dll's
1. TV Card Type: DVB-T FTA

Machine "Client":
TsReader: latest
Network: WiFi 'N' @ 300mbps

System.InvalidOperationException: Collection was modified; enumeration operation may not execute.
at System.Collections.ArrayList.ArrayListEnumeratorSimple.MoveNext()
at Gentle.Framework.PersistenceBroker.GetCacheResult(String statementHashKey)
at Gentle.Framework.PersistenceBroker.RetrieveList(Type type, Key key, IList result, IDbConnection conn, IDbTransaction tr)
at Gentle.Framework.Broker.RetrieveList(Type type)
at TvDatabase.Channel.ListAll()
at TvDatabase.TvBusinessLayer.get_Channels()

any ideas? i dont know how to reproduce the problem reliably, it's sorta random.
 

binary64

Portal Pro
July 30, 2006
105
1
No, I am using the tvengine3 API. But hopefully just because MP's client doesn't reveal this bug, it will still be treated as a bug.
 

tourettes

Retired Team Member
  • Premium Supporter
  • January 7, 2005
    17,301
    4,800
    No, I am using the tvengine3 API. But hopefully just because MP's client doesn't reveal this bug, it will still be treated as a bug.

    Sure it will be looked at some point, but the priority is first on those bugs that are affecting MP users.
     

    binary64

    Portal Pro
    July 30, 2006
    105
    1
    New Issue
    =========

    If I do:

    result = TvControl.RemoteControl.Instance.StartTimeShifting(ref m_user, 33, out card);
    result = TvControl.RemoteControl.Instance.StartTimeShifting(ref m_user, 33, out card);
    result = TvControl.RemoteControl.Instance.StartTimeShifting(ref m_user, 33, out card);

    the results are: NoVideoAudioDetected, UnknownChannel, UnknownChannel (incorrect/bug imo)

    notes:
    * yes, the channel is off-air at this time
    * m_user means it's a member field, in ctor, m_user = new User("Test", true);

    However,
    TvControl.User methodlocal_user;
    methodlocal_user = new TvControl.User("Test", true);
    result = TvControl.RemoteControl.Instance.StartTimeShifting(ref methodlocal_user, 33, out card);
    methodlocal_user = new TvControl.User("Test", true);
    result = TvControl.RemoteControl.Instance.StartTimeShifting(ref methodlocal_user, 33, out card);
    methodlocal_user = new TvControl.User("Test", true);
    result = TvControl.RemoteControl.Instance.StartTimeShifting(ref methodlocal_user, 33, out card);

    the results are: NoVideoAudioDetected, NoVideoAudioDetected, NoVideoAudioDetected (correct imo)


    I would prefer to use the member field method (this.user, created only in ctor). Any ideas why this difference is happening? Is this a bug or a .Net thing I don't know about?

    The reason I'm doing this, is when user idles on an off-air channel, i am polling it every few seconds so that when the channel finally comes back on air, it immedately starts playing.

    Thanks!
     

    binary64

    Portal Pro
    July 30, 2006
    105
    1
    Bug Report
    =========

    XP Pro SP3 + dvbfix
    The tvservice service unexpectedly terminated. Logs attached.
    I think this is related to my above post here - the User() and its usage.
    Also what is the consequence of multiple slaves using the same string for the Username at once?
     

    rtv

    Retired Team Member
  • Premium Supporter
  • April 7, 2005
    3,622
    301
    Osnabruck
    Home Country
    Germany Germany
    System.InvalidOperationException: Collection was modified; enumeration operation may not execute.
    at System.Collections.ArrayList.ArrayListEnumeratorSimple.MoveNext()

    at TvDatabase.TvBusinessLayer.get_Channels()

    any ideas? i dont know how to reproduce the problem reliably, it's sorta random.

    Definately a threading problem on your side.
     

    binary64

    Portal Pro
    July 30, 2006
    105
    1
    even though the crash was on the server-side of the remoting? plus tcp/ip is by its nature serialized
     

    rtv

    Retired Team Member
  • Premium Supporter
  • April 7, 2005
    3,622
    301
    Osnabruck
    Home Country
    Germany Germany
    Doesn't matter at all.
    Look for some C# how-to to multi-threaded programming.
    A quick sample app where:
    Thread 1 loops through an ArrayList (or any list implementing IEnumerable).
    Thread 2 modifies any items of the list while Thread 1 is still running.

    Will show you the issue.
    Most likely you aren't aware why you trigger this because MP's gentle DB statements are executed from the same thread which communicates with the "businesslayer". You however most likely use an own thread to query it's methods.

    even though the crash was on the server-side of the remoting? plus tcp/ip is by its nature serialized
    Of course since TVE is Thread 1 of this example (which throws InvalidOperationException then).
     

    Users who are viewing this thread

    Top Bottom