Debug Mode 2 Posted January 5, 2014 Share Posted January 5, 2014 (edited) Snapshot of GetItemImage generated by ServiceStack on 05.01.2014 18:03:39 Response Status Error Code AggregateException Message One or more errors occured Stack Trace at System.Threading.Tasks.Task.WaitAll (System.Threading.Tasks.Task[] tasks, Int32 millisecondsTimeout, CancellationToken cancellationToken) [0x00000] in <filename unknown>:0 at System.Threading.Tasks.Task.WaitAll (System.Threading.Tasks.Task[] tasks) [0x00000] in <filename unknown>:0 at MediaBrowser.Api.Images.ImageWriter.WriteTo (System.IO.Stream responseStream) [0x00000] in <filename unknown>:0 at ServiceStack.HttpResponseExtensionsInternal.WriteToOutputStream (IResponse response, System.Object result, System.Byte[] bodyPrefix, System.Byte[] bodySuffix) [0x00000] in <filename unknown>:0 at ServiceStack.HttpResponseExtensionsInternal.WriteToResponse (IResponse response, System.Object result, ServiceStack.Web.ResponseSerializerDelegate defaultAction, IRequest request, System.Byte[] bodyPrefix, System.Byte[] bodySuffix) [0x00000] in <filename unknown>:0 Edited January 5, 2014 by Debug Mode Link to comment Share on other sites More sharing options...
Luke 37045 Posted January 5, 2014 Share Posted January 5, 2014 ok so it's the same thing. alright, i'll look at this then put a new mono server build up. Link to comment Share on other sites More sharing options...
Luke 37045 Posted January 5, 2014 Share Posted January 5, 2014 Ok, new build up: https://www.dropbox.com/s/fki81zomq7mtryx/Release%20Mono.zip Let me know if it still fails because there's another change i can make. Fyi, this build may force a re-download of ffmpeg and re-scan of media info in your library. Won't happen again though. Link to comment Share on other sites More sharing options...
Debug Mode 2 Posted January 5, 2014 Share Posted January 5, 2014 I can see everything now. The date thing persists, but as long as an future update bumps everything existing automatically one day up there shouldn't be any problem. Thank you! Link to comment Share on other sites More sharing options...
Debug Mode 2 Posted January 5, 2014 Share Posted January 5, 2014 Could it be a bug that a episode without season is functioning aside from not appearing on the shows site unless its put into a subfolder? Link to comment Share on other sites More sharing options...
Luke 37045 Posted January 5, 2014 Share Posted January 5, 2014 Could it be a bug that a episode without season is functioning aside from not appearing on the shows site unless its put into a subfolder? Explain a little more? You don't need a season subfolder, however, there is an open issue where if you don't use season folders, and the episode does not have a season number, then it will not show up under any of the seasons. Link to comment Share on other sites More sharing options...
Debug Mode 2 Posted January 5, 2014 Share Posted January 5, 2014 (edited) Explain a little more? You don't need a season subfolder, however, there is an open issue where if you don't use season folders, and the episode does not have a season number, then it will not show up under any of the seasons. That's what I meant. I thought that I could do this: >Wish Upon the Pleiades __- E1 __- E2 __- E3 __- E4 But it didn't work until I made a random folder. They showed up afterwards as: >Wish Upon the Pleiades __o derp ____- ... Edited January 5, 2014 by Debug Mode Link to comment Share on other sites More sharing options...
Luke 37045 Posted January 5, 2014 Share Posted January 5, 2014 Yea it's an open issue. We need to create a virtual "unknown season" grouping on the fly. But really the root issue is that the file names are not using. We support quite a few different ones, and they're all listed in the library wiki. So if we're able to pull the season number from the filename, the issue won't occur. Link to comment Share on other sites More sharing options...
abeloin 27 Posted January 5, 2014 Share Posted January 5, 2014 Since we've gotten a little further, to anyone who wants to test - I can provide a build for the linux server, but you will have to be capable of not only installing mono, but building it as well. @@abeloin can you verify these updated instructions, assuming I provide a build for testers: Rebuild Pokorra's Mono src rpms with patch for servicestack v4 issue Instal Mono, libgdi+ Sorry for the late reply, I was on vacation. For fedora: Rebuild Pokorra's Mono src rpms with patch for servicestack v4 issue Install mono-opt, libgdiplus and mono-libgdiplus-opt (If system x64, install libgdiplus.i686 not libgdiplus.x86_64) To develop: Install monodevelop-opt Link to comment Share on other sites More sharing options...
Luke 37045 Posted January 5, 2014 Share Posted January 5, 2014 Ah Abeloin, it is great to see you back on here. Welcome back. Link to comment Share on other sites More sharing options...
Luke 37045 Posted January 5, 2014 Share Posted January 5, 2014 Testing gone very well, with several issues resolved. the basic install steps are: - build mono with patches - install libgdi and setup a symlink for it, otherwise it fails to load on some systems: http://stackoverflow.com/questions/15627951/mono-dllnotfound-error (Anything we can do there). - Run server Link to comment Share on other sites More sharing options...
Luke 37045 Posted January 5, 2014 Share Posted January 5, 2014 So here are our open issues: - The unimplemented methods I emailed you about before your vacation - Some users unable to use SMB shares and have to create local mounts. Unclear if latest mono resolves this, or if this is something we'll just have to live with because all we're doing is using framework I/O methods. Link to comment Share on other sites More sharing options...
abeloin 27 Posted January 5, 2014 Share Posted January 5, 2014 (edited) yea i saw this too. something about libgdi being in usr/iib64 but mono looking for it in usr/lib. or vice versa possibly. nothing to do with the app. might need more instructions from @@abeloin Make sure you install the x86_32 version not the x86_64, in fedora: yum install libgdiplus.i686 If using tpokorra mono-opt package, install mono-libgdiplus-opt which will create a symlink from /usr/lib to /opt/mono/lib. Or manually(something like this): ln -s /opt/mono/lib/libgdiplus.so /usr/lib/libgdiplus.so.0 Edited January 5, 2014 by abeloin 1 Link to comment Share on other sites More sharing options...
Luke 37045 Posted January 5, 2014 Share Posted January 5, 2014 ok great, so that open issue is resolved. just need to document installing x86_32 Link to comment Share on other sites More sharing options...
abeloin 27 Posted January 5, 2014 Share Posted January 5, 2014 (edited) So here are our open issues: - Some users unable to use SMB shares and have to create local mounts. Unclear if latest mono resolves this, or if this is something we'll just have to live with because all we're doing is using framework I/O methods. UNC path will not work in Linux as they're a windows kernel feature. It would have to be implemented in MB using something like cifsclient(http://code.google.com/p/cifsclient/) or gnomevfs. MBT works perfectly with localpath folder(ie: /share/mb3/movies) Workaround for XBMB3C require a patch that implement path substitution(ie: /share/video/movies to \\server\mb3\movies) see: http://pastebin.com/RJb6YsUw I was using an old version of xbmb3c, use the stream option Edited January 6, 2014 by abeloin 1 Link to comment Share on other sites More sharing options...
Luke 37045 Posted January 5, 2014 Share Posted January 5, 2014 UNC path will not work in Linux as they're a windows kernel feature. It would have to be implemented in MB using something like cifsclient(http://code.google.com/p/cifsclient/) or gnomevfs. MBT works perfectly with localpath folder(ie: /share/mb3/movies) Workaround for XBMB3C require a patch that implement path substitution(ie: /share/video/movies to \\server\mb3\movies) I saw that library but it looks like all of our IO would have to be rewritten. Not impossible thanks to dependency injection but it would be long, painful process. I was thinking of path substitution and I think that might not be a bad idea. User sets up the substitutes in the server dashboard and the api layer handles it so that clients don't have to worry about it. It's a little less flexible than doing it at the client level but probably fits the majority of use cases. MBC, MBT and XBMB3C would all be in the same boat. Link to comment Share on other sites More sharing options...
abeloin 27 Posted January 6, 2014 Share Posted January 6, 2014 RHEL6/CentOS 6 SQL issue isolated: Further VM testing in RHEL6/CentOS6 shows my SQL issue is related to the version of the sqlite3 library: The natively installed version 3.6.x will not work (CentOS 6). version 3.7.x DOES work (RHEL 7 beta). installing sqlite 3.7.x on RHEl6/CentOS 6 appears to be unsupported. i.e its not in the EPEL repository and it may cause other issues Thanks. we'll have to figure out why it's not using our embedded version From https://github.com/MediaBrowser/MediaBrowser/commit/79a5363a7e5d4878e1ff8fad1c5c4f01e9f9fd38: Depending of the OS, System.Data.SQLite will look for: (See http://www.mono-project.com/Interop_with_Native_Libraries for more info) sqlite3.dll in Windows(Provided with the project) libsqlite3.so.0 in Linux(Need to be installed. ie yum install sqlite.i686) libsqlite3.dylib in MacOS X(!?) For CentOS 6, try to build the new version of sqlite(configure & make but not install) and place it in the same folder as MediaBrowser.Server.Mono.exe If it still doesn't work, try adding Mediabrowser path to LD: export LD_LIBRARY_PATH=/opt/mediabrowser:$LD_LIBRARY_PATH If all else fail, try running in verbose mode:(http://www.mono-project.com/DllNotFoundException) MONO_LOG_LEVEL=debug mono MediaBrowser.Server.Mono.exe And you will see the order mono load the so file : Mono-INFO: DllImport loading location: './libgdiplus.dll.so'. Link to comment Share on other sites More sharing options...
abeloin 27 Posted January 6, 2014 Share Posted January 6, 2014 (edited) The plugin trakt is not working, I get a System.NotImplementedException. Edit: Oops forgot to add the exception This method must be implemented in derived classes System.NotImplementedException at System.Net.WebRequest.set_ImpersonationLevel (TokenImpersonationLevel value) [0x00000] in <filename unknown>:0 at (wrapper remoting-invoke-with-check) System.Net.WebRequest:set_ImpersonationLevel (System.Security.Principal.TokenImpersonationLevel) at System.Net.Http.WebRequestHandler.CreateWebRequest (System.Net.Http.HttpRequestMessage request) [0x00000] in <filename unknown>:0 at System.Net.Http.HttpClientHandler+<SendAsync>c__async0.MoveNext () [0x00000] in <filename unknown>:0 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x00000] in <filename unknown>:0 at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[System.Net.Http.HttpResponseMessage].GetResult () [0x00000] in <filename unknown>:0 at System.Net.Http.HttpClient+<SendAsyncWorker>c__async0.MoveNext () [0x00000] in <filename unknown>:0 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x00000] in <filename unknown>:0 at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[System.Net.Http.HttpResponseMessage].GetResult () [0x00000] in <filename unknown>:0 at Trakt.Net.HttpClientManager+<PostInternal>c__async2.MoveNext () [0x00000] in <filename unknown>:0 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x00000] in <filename unknown>:0 at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[System.IO.Stream].GetResult () [0x00000] in <filename unknown>:0 at Trakt.Net.HttpClientManager+<Post>c__async0.MoveNext () [0x00000] in <filename unknown>:0 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x00000] in <filename unknown>:0 at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[System.IO.Stream].GetResult () [0x00000] in <filename unknown>:0 at Trakt.Api.TraktApi+<SendGetAllMoviesRequest>c__asyncC.MoveNext () [0x00000] in <filename unknown>:0 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x00000] in <filename unknown>:0 at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[System.Collections.Generic.List`1[Trakt.Api.DataContracts.TraktMovieDataContract]].GetResult () [0x00000] in <filename unknown>:0 at Trakt.ScheduledTasks.SyncFromTraktTask+<SyncTraktDataForUser>c__async1.MoveNext () [0x00000] in <filename unknown>:0 Edited January 6, 2014 by abeloin Link to comment Share on other sites More sharing options...
Redshirt 1487 Posted January 6, 2014 Share Posted January 6, 2014 The plugin trakt is not working, I get a System.NotImplementedException. There's gotta be more info than that... Link to comment Share on other sites More sharing options...
Luke 37045 Posted January 6, 2014 Share Posted January 6, 2014 Red our internal http client should have everything you need now to perform posts 1 Link to comment Share on other sites More sharing options...
Redshirt 1487 Posted January 6, 2014 Share Posted January 6, 2014 I can't remember the specifics, but I moved away from the internal http client because it was mangling my json and escaping characters it didn't need to. Link to comment Share on other sites More sharing options...
Luke 37045 Posted January 6, 2014 Share Posted January 6, 2014 I think it will be different now because you can specify the content type Link to comment Share on other sites More sharing options...
abeloin 27 Posted January 6, 2014 Share Posted January 6, 2014 WebRequestHandler seems incomplete in mono, see https://bugzilla.xamarin.com/show_bug.cgi?id=12546 As a workaround but not tested in Windows: diff --git a/Trakt/Net/HttpClientManager.cs b/Trakt/Net/HttpClientManager.cs index cefd449..673d00e 100644 --- a/Trakt/Net/HttpClientManager.cs +++ b/Trakt/Net/HttpClientManager.cs @@ -15,6 +15,11 @@ namespace Trakt.Net { public class HttpClientManager { + public static bool IsRunningOnMono () + { + return Type.GetType ("Mono.Runtime") != null; + } + private readonly ILogger _logger; public HttpClientManager(ILogger logger) @@ -92,13 +97,18 @@ namespace Trakt.Net await resourcePool.WaitAsync(cancellationToken).ConfigureAwait(false); } - var handler = new WebRequestHandler + var client = new HttpClient(); + + if (!IsRunningOnMono()) { - CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore), - AutomaticDecompression = DecompressionMethods.None - }; + var handler = new WebRequestHandler + { + CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore), + AutomaticDecompression = DecompressionMethods.None + }; - var client = new HttpClient(handler); + client = new HttpClient(handler); + } try { Link to comment Share on other sites More sharing options...
Redshirt 1487 Posted January 6, 2014 Share Posted January 6, 2014 Luke. Can you overload Post and provide the ability for me to just pass in a string rather than a Dictionary<string,string>. Link to comment Share on other sites More sharing options...
Luke 37045 Posted January 6, 2014 Share Posted January 6, 2014 You can. there's an overload that takes HttpRequestOptions that's the lowest level verison Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now