Subsonic 6.1.beta1 released

Announcements and discussion of new releases.

Moderator: moderators

Subsonic 6.1.beta1 released

Postby sindre_mehus » Mon Mar 13, 2017 5:52 pm

EDIT: Due to issues related to the upgrade of the internal HSQLDB I have temporarily removed the beta from the Download page.

Dear friends,

I have finally released the first beta for Subsonic 6.1

Please note that this is a one-way upgrade, see http://www.subsonic.org/pages/database-upgrade.jsp for more details.

New: Improved video streaming with HLS.
New: Added support for manually selecting video bitrate (in addition to HLS adaptive bitrate switching).
New: Bookmark support for podcasts, audio books and videos. Works across web players, SONOS and apps.
New: Improved artist radio feature. Prioritize top songs.
New: Improved search relevance.
New: Added support for using MySQL, PostgreSQL and MariaDB as database backends.
New: Upgraded default database HSQLDB to version 2.3.4.
New: Show album and artist images on search result and "starred" pages.
New: Added tag support for AIFF files.
New: Added table headers in web interface.
New: Nicer cover art images on hi-res screens.
New: Nicer top and left menus.
New: Added controls for selecting all tracks in album/podcast/play queue.
New: Moved menu above play queue.
New: Moved shuffle button next to player controls.
New: Added tooltip to player buttons.
New: Updated Dutch translation, courtesy of Toolman.
New: Updated Korean translation, courtesy of Rhetor Choi.
New: Updated Estonian translation, courtesy of Olav Mägi.
Bugfix: Fixed broken Chromecast support.
Bugfix: Avoid multiple submissions to Last.fm
Bugfix: Missing artist images.
Bugfix: "Save as playlist" broken in Firefox.
Bugfix: Left pane reloads when reloading random albums.
Bugfix: Download play queue broken if containing duplicate songs.
Bugfix: Windows uninstaller should only delete known files.
Bugfix: "Download all" sometimes causes corrupt zip file.
Bugfix: Some podcasts with https don't work.
Bugfix: Delete all pertaining files when deleting a podcast channel.
REST: Added getScanStatus and startScan methods.

Hope you like it!
Sindre
Subsonic developer
User avatar
sindre_mehus
 
Posts: 1955
Joined: Tue Nov 29, 2005 6:19 pm
Location: Oslo, Norway

Re: Subsonic 6.1.beta1 released

Postby acroyear » Mon Mar 13, 2017 6:24 pm

New: Bookmark support for podcasts, audio books and videos. Works across web players, SONOS and apps


From an API perspective, how is this different? I can just use the 'id' of the entry no matter its source and there won't be any overlap?
--
Joe Shelby
http://subfiresuite.com/
http://subfireplayer.net/
User avatar
acroyear
 
Posts: 777
Joined: Wed Mar 27, 2013 8:05 pm
Location: Northern, VA

Re: Subsonic 6.1.beta1 released

Postby sindre_mehus » Mon Mar 13, 2017 6:32 pm

acroyear wrote:
New: Bookmark support for podcasts, audio books and videos. Works across web players, SONOS and apps


From an API perspective, how is this different? I can just use the 'id' of the entry no matter its source and there won't be any overlap?


There is not change API-wise, it's just that the web app (and SONOS) now also uses the existing bookmark API.
Subsonic developer
User avatar
sindre_mehus
 
Posts: 1955
Joined: Tue Nov 29, 2005 6:19 pm
Location: Oslo, Norway

Re: Subsonic 6.1.beta1 released

Postby toolman » Mon Mar 13, 2017 11:50 pm

Jusr installed the Subsonic 6.1.beta1 release on a testmachine
On the surface not much has changed.
There's one page more marked Bookmarks.
I did some tests on the searchfunction and this indeed seems to be performing a lot better.
However in the changelog it says: New: Added support for using MySQL, PostgreSQL and MariaDB as database backends.
I know you have to manually edit a file in Subsonic according to the OS on which Subsonic is running, but wouldn't it be a lot easier to create a page In Subsonic to enter the correct parameters according to the OS you are using? Preferably with a kind of check if you entered the correct data.
I think the current method to configure Subsonic to use another database is prone to mistakes and not very user friendly.
Other than that it seems to me that Sindre has done some major overhauling which makes Subsonic much better.
toolman
 
Posts: 538
Joined: Fri Dec 11, 2009 4:18 pm
Location: Netherlands

Re: Subsonic 6.1.beta1 released

Postby FlyingPersian » Tue Mar 14, 2017 12:00 am

Thank you very much! The upgrade worked like a charm on FreeNAS, I just copied over the files of the standalone.tar.gz into the old folder and restarted the server! Is there any chance some of the themes that are available in madsonic will be imported? I really really love their Madsonic X-MAS Red theme :o
FlyingPersian
 
Posts: 29
Joined: Mon Oct 31, 2016 11:43 pm

Re: Subsonic 6.1.beta1 released

Postby kayzlot1 » Tue Mar 14, 2017 3:10 am

Fixed Chromecast support and users can choose their video quality again!!! :D

Thanks Sindre
kayzlot1
 
Posts: 24
Joined: Tue Feb 09, 2016 11:59 pm

Re: Subsonic 6.1.beta1 released

Postby guss77 » Tue Mar 14, 2017 8:33 am

A. Thanks for the beta release!
B. Where is a good place to discuss issues with the beta?
guss77
 
Posts: 5
Joined: Sun Sep 18, 2016 1:37 pm

Re: Subsonic 6.1.beta1 released

Postby Tak-MK » Tue Mar 14, 2017 3:39 pm

The re-scanning like the first time after upgrading is killing me, it'll last an entire day :(
But meh, thanks a lot for the upgrade! ¿Is there any test to know if MySQL/PostgreSQL is better than HSQLDB for Subsonic?
User avatar
Tak-MK
 
Posts: 107
Joined: Thu Dec 22, 2016 3:27 pm

Re: Subsonic 6.1.beta1 released

Postby oa72 » Tue Mar 14, 2017 4:35 pm

I'm having issues with the artist images (thumbnail and search images) loaded from last.fm while accessing the upgraded Subsonic via a Apache proxy, everything else seems to be rendering fine. When testing locally without the Apache proxy artist images are fine.

Ex.
1) Local access, image link rendering ok
http://192.168.2.198:4040/artistImage.view?id=40388 redirects to
https://lastfm-img2.akamaized.net/i/u/1 ... f0b6d9.png

2) Apache proxy access, image link rendered with error 404
https://mydomain.net/artistImage.view?id=40388 redirects to
https://mydomain.net/i/u/174s/f1cdf1e31 ... f0b6d9.png


Artist images within biography section is rendering fine together with text fetched from last.fm

Is this due to a bug in the beta release (or am I having a proxy issues)?
oa72
 
Posts: 3
Joined: Tue Mar 14, 2017 4:29 pm

Re: Subsonic 6.1.beta1 released

Postby Tak-MK » Tue Mar 14, 2017 5:28 pm

oa72 wrote:I'm having issues with the artist images (thumbnail and search images) loaded from last.fm while accessing the upgraded Subsonic via a Apache proxy, everything else seems to be rendering fine. When testing locally without the Apache proxy artist images are fine.

Ex.
1) Local access, image link rendering ok
http://192.168.2.198:4040/artistImage.view?id=40388 redirects to
https://lastfm-img2.akamaized.net/i/u/1 ... f0b6d9.png

2) Apache proxy access, image link rendered with error 404
https://mydomain.net/artistImage.view?id=40388 redirects to
https://mydomain.net/i/u/174s/f1cdf1e31 ... f0b6d9.png


Artist images within biography section is rendering fine together with text fetched from last.fm

Is this due to a bug in the beta release (or am I having a proxy issues)?

It's working for me using apache too.
User avatar
Tak-MK
 
Posts: 107
Joined: Thu Dec 22, 2016 3:27 pm

Re: Subsonic 6.1.beta1 released

Postby oa72 » Tue Mar 14, 2017 6:21 pm

Tak-MK wrote:
oa72 wrote:I'm having issues with the artist images (thumbnail and search images) loaded from last.fm while accessing the upgraded Subsonic via a Apache proxy, everything else seems to be rendering fine. When testing locally without the Apache proxy artist images are fine.

Ex.
1) Local access, image link rendering ok
http://192.168.2.198:4040/artistImage.view?id=40388 redirects to
https://lastfm-img2.akamaized.net/i/u/1 ... f0b6d9.png

2) Apache proxy access, image link rendered with error 404
https://mydomain.net/artistImage.view?id=40388 redirects to
https://mydomain.net/i/u/174s/f1cdf1e31 ... f0b6d9.png


Artist images within biography section is rendering fine together with text fetched from last.fm

Is this due to a bug in the beta release (or am I having a proxy issues)?

It's working for me using apache too.


Solved it, it was a incorrect ProxyPassReverse statement.

Then I'm happy, and can just say thanks for the updated release. Looking good so far :D
oa72
 
Posts: 3
Joined: Tue Mar 14, 2017 4:29 pm

Re: Subsonic 6.1.beta1 released

Postby eareye » Tue Mar 14, 2017 7:31 pm

After upgrading from a working Subsonic 6.0 to 6.1b, I get a constraint violation in the ALBUM table (due to the ARTIST and NAME not being unique in a record as far as I can tell from the schema). I guess that means I must have two instances of the same album or something like that. I don't know if this is a new restriction enforced in 6.1b (or why 6.0 didn't seem to mind).

I plan on trying to access the database to see if I can find an easy way to determine if any records in the table do, in fact, have the same artist and album name values so I can remove them so I can start Subsonic again.

Code: Select all
[2017-03-14 12:48:23,931] ERROR HsqlDaoHelper - Failed to initialize database.
org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLIntegrityConstraintViolationException: integrity constraint violation: unique constraint or index violation; SYS_CT_134 table: ALBUM
        at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:82)
        at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:382)
        at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:429)
        at net.sourceforge.subsonic.dao.schema.hsql.Schema25.execute(Schema25.java:24)
        at net.sourceforge.subsonic.dao.DaoHelper.init(DaoHelper.java:27)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1414)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1375)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269)
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1245)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
        at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
        at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
        at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
        at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:530)
        at org.mortbay.jetty.servlet.Context.startContext(Context.java:135)
        at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1218)
        at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:500)
        at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:448)
        at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
        at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:117)
        at org.mortbay.jetty.Server.doStart(Server.java:217)
        at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
        at net.sourceforge.subsonic.booter.deployer.SubsonicDeployer.deployWebApp(SubsonicDeployer.java:135)
        at net.sourceforge.subsonic.booter.deployer.SubsonicDeployer.<init>(SubsonicDeployer.java:65)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
        at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:100)
        at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:61)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:877)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:839)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
        at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
        at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
        at net.sourceforge.subsonic.booter.Main.<init>(Main.java:24)
        at net.sourceforge.subsonic.booter.Main.main(Main.java:63)
Caused by: java.sql.SQLIntegrityConstraintViolationException: integrity constraint violation: unique constraint or index violation; SYS_CT_134 table: ALBUM
        at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
        at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
        at org.hsqldb.jdbc.JDBCConnection.<init>(Unknown Source)
        at org.hsqldb.jdbc.JDBCDriver.getConnection(Unknown Source)
        at org.hsqldb.jdbc.JDBCDriver.connect(Unknown Source)
        at java.sql.DriverManager.getConnection(DriverManager.java:664)
        at java.sql.DriverManager.getConnection(DriverManager.java:208)
        at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:174)
        at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriver(DriverManagerDataSource.java:165)
        at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnectionFromDriver(AbstractDriverBasedDataSource.java:149)
        at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnection(AbstractDriverBasedDataSource.java:119)
        at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:113)
        at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:79)
        ... 74 more
Caused by: org.hsqldb.HsqlException: integrity constraint violation: unique constraint or index violation; SYS_CT_134 table: ALBUM
        at org.hsqldb.error.Error.error(Unknown Source)
        at org.hsqldb.Constraint.getException(Unknown Source)
        at org.hsqldb.index.IndexAVL.insert(Unknown Source)
        at org.hsqldb.persist.RowStoreAVL.indexRow(Unknown Source)
        at org.hsqldb.persist.RowStoreAVLDisk.indexRow(Unknown Source)
        at org.hsqldb.persist.RowStoreAVLDisk.rollbackRow(Unknown Source)
        at org.hsqldb.TransactionManager2PL.rollbackPartial(Unknown Source)
        at org.hsqldb.TransactionManager2PL.rollback(Unknown Source)
        at org.hsqldb.Session.rollbackNoCheck(Unknown Source)
        at org.hsqldb.Session.rollback(Unknown Source)
        at org.hsqldb.Session.close(Unknown Source)
        at org.hsqldb.SessionManager.closeAllSessions(Unknown Source)
        at org.hsqldb.persist.ScriptRunner.runScript(Unknown Source)
        at org.hsqldb.persist.ScriptRunner.runScript(Unknown Source)
        at org.hsqldb.persist.Log.processLog(Unknown Source)
        at org.hsqldb.persist.Log.open(Unknown Source)
        at org.hsqldb.persist.Logger.open(Unknown Source)
        at org.hsqldb.Database.reopen(Unknown Source)
        at org.hsqldb.Database.open(Unknown Source)
        at org.hsqldb.DatabaseManager.getDatabase(Unknown Source)
        at org.hsqldb.DatabaseManager.newSession(Unknown Source)
        ... 85 more
[2017-03-14 12:48:24,223] INFO SettingsService - Java: 1.8.0_111, OS: Linux
[2017-03-14 12:48:24,231] INFO VersionService - Resolved local Subsonic version to: 6.1.beta1
eareye
 
Posts: 4
Joined: Tue Mar 14, 2017 6:38 pm

Re: Subsonic 6.1.beta1 released

Postby jmoonen » Tue Mar 14, 2017 7:45 pm

Tak-MK wrote:The re-scanning like the first time after upgrading is killing me, it'll last an entire day :(


Same over here. I scan every morning at 8 hour clock and this takes normally about 20 a 25 minutes ( 250.000 songs ). The first scan after the update took almost all day, a daily rescan went from 20 a 25 minutes to 4 hours ????
jmoonen
 
Posts: 9
Joined: Wed Oct 24, 2012 8:10 am

Re: Subsonic 6.1.beta1 released

Postby sindre_mehus » Tue Mar 14, 2017 7:59 pm

jmoonen wrote:
Tak-MK wrote:The re-scanning like the first time after upgrading is killing me, it'll last an entire day :(


Same over here. I scan every morning at 8 hour clock and this takes normally about 20 a 25 minutes ( 250.000 songs ). The first scan after the update took almost all day, a daily rescan went from 20 a 25 minutes to 4 hours ????


The first scan after upgrading is a "deep" scan where all ID3 tags are read again. But I'm surprise that the subsequent scans are slower than before. Could be related to the new database version. I assume you're using the default HSQLDB database? Is there anything of interest in subsonic.log? (All database operations taking more than 2 seconds should be logged). Are your files on a network disk?

Thanks
Sindre
Subsonic developer
User avatar
sindre_mehus
 
Posts: 1955
Joined: Tue Nov 29, 2005 6:19 pm
Location: Oslo, Norway

Re: Subsonic 6.1.beta1 released

Postby Tak-MK » Tue Mar 14, 2017 8:58 pm

sindre_mehus wrote:
jmoonen wrote:
Tak-MK wrote:The re-scanning like the first time after upgrading is killing me, it'll last an entire day :(


Same over here. I scan every morning at 8 hour clock and this takes normally about 20 a 25 minutes ( 250.000 songs ). The first scan after the update took almost all day, a daily rescan went from 20 a 25 minutes to 4 hours ????


The first scan after upgrading is a "deep" scan where all ID3 tags are read again. But I'm surprise that the subsequent scans are slower than before. Could be related to the new database version. I assume you're using the default HSQLDB database? Is there anything of interest in subsonic.log? (All database operations taking more than 2 seconds should be logged). Are your files on a network disk?

Thanks
Sindre

Yup, I'm using HSQLDB, and with 1.5TB music disk... (local disk, no network), and it's taking hours and hours to scan after the first long scan. :(
And nope, I can't see anything relevant in the log:
http://pastebin.com/raw/XLp9xFFx
User avatar
Tak-MK
 
Posts: 107
Joined: Thu Dec 22, 2016 3:27 pm

Next

Return to Announcements

Who is online

Users browsing this forum: No registered users and 15 guests