[Support] binhex - Lidarr


Recommended Posts

  • 1 month later...

Unraid problem or Binhex Docker Repository Issue - Don't know.  Need help!

 

 

Background:

Last Saturday I decided to swap the 250gb nvme in my main rig for 2 500gb nvme drives in raid 0.  Followed instructions found here https://www.youtube.com/watch?v=ij8AOEF1pTU from Spaceinvader One.  After restoring libvert and disk image from backup, Win10 VM fired up without issues. 

 

Restored appdata using community applications backup and restore app and reinstalled docker images from history.  While the dockers install without error and startup, I am unable to reach the web UI for any of the affected dockers.  (Log for Lidarr posted in images attached).

 

Jumped through hoops. 

 

Deleted docker image file multiple times,

un-installed / re-installed nvme drives and re-formatted. 

Did NOT restore appdata and tried to re-install binhex dockers listed from scratch and still the same results. 

To test if the flash drive for the Main Rig was corrupted, tried to install Binhex-Lidarr on my NAS box (Usually Krusader is the only docker that runs on the NAS).  Same resuts. 

As a test, installed Unraid 6.6.0 -rc4 on the NAS box last night and tried to install Binhex-Lidarr again.  Same results.

 

Essentially the error message in the logs for Radarr, Sonarr and Lidarr seems to be the same:

 

at NzbDrone.Core.Datastore.DbFactory.CreateMain (System.String connectionString, NzbDrone.Core.Datastore.Migration.Framework.MigrationContext migrationContext) [0x0000b] in C:\projects\lidarr\src\NzbDrone.Core\Datastore\DbFactory.cs:122 is corrupt, restore from backup if available. See: https://github.com/Lidarr/Lidarr/wiki/FAQ#i-am-getting-an-error-database-disk-image-is-malformed

 

Docker containers affected:

Binhex-Radarr

Binhex-Sonarr

Binhex-Lidarr

Binhex-Plexpass

 

Docker containers NOT affected:

Binhex-SABNZBD

Binhex-Deluge

Krusader

Calibre

Cops

Lazylibrarian

 

Any help/input/work around will be greatly appreciated.  Want to avoid having to use some docker from a different repository and go through setting up each from scratch.  Especially Plex.

 

Main Rig - Media Server

UNRAID 6.5.0

Intel Core i9-7900x

Gigabyte Aorus x299 Gaming 9

64gbs Corsair Vengence DDR4 3000

Samsung PM961 M.2 512gbs x 2 - cache in raid 0

 8 port HDD controller

iStarUSA 3.5" x 5 bay hotswap disk cage

EVGA 850W P2 power supply

Seagate Enterprise level 8TB HDD - parity drive

WD Red 8TB HDD - parity drive x 2

Misc HDDs for a total of 20TB storage space

 

Backup Rig - NAS

UNRAID 6.6.0 - rc4

Intel Core i7-4790k

Asus z97 pro gamer

32gbs (gotta check) DDR3

Samsung PM961 M.2 125gbs - cache 

Marvel 8 port HDD controller

Silverstone CS380 hotswap case

EVGA 650W P2 power supply

Seagate 2TB HDD - parity drive

Seagate 2TB HDD - parity drive x 2

Misc HDDs for a total of 6TB storage space

 

2018-09-17 19:34:02.985572 [info] System information Linux 0e75fe0edf53 4.18.8-unRAID #1 SMP Sat Sep 15 09:15:50 PDT 2018 x86_64 GNU/Linux

2018-09-17 19:34:03.003646 [info] PUID defined as '99'

2018-09-17 19:34:03.052851 [info] PGID defined as '100'

2018-09-17 19:34:03.103273 [info] UMASK defined as '000'

2018-09-17 19:34:03.120460 [info] Permissions already set for volume mappings

2018-09-17 19:34:03.139694 [info] Starting Supervisor...

2018-09-17 19:34:03,372 INFO Included extra file "/etc/supervisor/conf.d/lidarr.conf" during parsing

2018-09-17 19:34:03,372 INFO Set uid to user 0 succeeded

2018-09-17 19:34:03,373 INFO supervisord started with pid 8

2018-09-17 19:34:04,375 INFO spawned: 'lidarr' with pid 48

2018-09-17 19:34:04,375 INFO reaped unknown pid 9

2018-09-17 19:34:04,577 DEBG 'lidarr' stdout output:

[Info] Bootstrap: Starting Lidarr - /usr/lib/lidarr/Lidarr.exe - Version 0.3.1.471

 

2018-09-17 19:34:04,884 DEBG 'lidarr' stdout output:

[Info] AppFolderInfo: Data directory is being overridden to [/config]

 

2018-09-17 19:34:04,947 DEBG 'lidarr' stdout output:

[Info] Router: Application mode: Interactive

 

2018-09-17 19:34:05,059 DEBG 'lidarr' stdout output:

[Info] MigrationLogger: *** Migrating data source=/config/lidarr.db;cache size=-10485760;datetimekind=Utc;journal mode=Wal;pooling=True;version=3 ***

 

2018-09-17 19:34:05,113 DEBG 'lidarr' stdout output:

 

 

 

2018-09-17 19:34:05,427 DEBG 'lidarr' stdout output:

[Fatal] ConsoleApp: EPIC FAIL!

 

[v0.3.1.471] NzbDrone.Core.Datastore.CorruptDatabaseException: Lidarr failed to start: Database file: System.Data.SQLite.SQLiteException (0x80004005): disk I/O error

disk I/O error

at System.Data.SQLite.SQLite3.Prepare (System.Data.SQLite.SQLiteConnection cnn, System.String strSql, System.Data.SQLite.SQLiteStatement previous, System.UInt32 timeoutMS, System.String& strRemain) [0x0033c] in <61a20cde294d4a3eb43b9d9f6284613b>:0

at System.Data.SQLite.SQLiteCommand.BuildNextCommand () [0x000f6] in <61a20cde294d4a3eb43b9d9f6284613b>:0

at System.Data.SQLite.SQLiteCommand.GetStatement (System.Int32 index) [0x00008] in <61a20cde294d4a3eb43b9d9f6284613b>:0

at (wrapper remoting-invoke-with-check) System.Data.SQLite.SQLiteCommand.GetStatement(int)

at System.Data.SQLite.SQLiteDataReader.NextResult () [0x0011e] in <61a20cde294d4a3eb43b9d9f6284613b>:0

at System.Data.SQLite.SQLiteDataReader..ctor (System.Data.SQLite.SQLiteCommand cmd, System.Data.CommandBehavior behave) [0x00090] in <61a20cde294d4a3eb43b9d9f6284613b>:0

at (wrapper remoting-invoke-with-check) System.Data.SQLite.SQLiteDataReader..ctor(System.Data.SQLite.SQLiteCommand,System.Data.CommandBehavior)

at System.Data.SQLite.SQLiteCommand.ExecuteReader (System.Data.CommandBehavior behavior) [0x0000c] in <61a20cde294d4a3eb43b9d9f6284613b>:0

at System.Data.SQLite.SQLiteCommand.ExecuteNonQuery (System.Data.CommandBehavior behavior) [0x00006] in <61a20cde294d4a3eb43b9d9f6284613b>:0

at System.Data.SQLite.SQLiteCommand.ExecuteNonQuery () [0x00006] in <61a20cde294d4a3eb43b9d9f6284613b>:0

at System.Data.SQLite.SQLiteConnection.Open () [0x00959] in <61a20cde294d4a3eb43b9d9f6284613b>:0

at FluentMigrator.Runner.Processors.GenericProcessorBase.EnsureConnectionIsOpen () [0x0000e] in C:\Users\Mark\Source\Repos\fluentmigrator\src\FluentMigrator.Runner\Processors\GenericProcessorBase.cs:54

at FluentMigrator.Runner.Processors.SQLite.SQLiteProcessor.Exists (System.String template, System.Object[] args) [0x00000] in C:\Users\Mark\Source\Repos\fluentmigrator\src\FluentMigrator.Runner\Processors\SQLite\SQLiteProcessor.cs:78

at FluentMigrator.Runner.Processors.SQLite.SQLiteProcessor.TableExists (System.String schemaName, System.String tableName) [0x00000] in C:\Users\Mark\Source\Repos\fluentmigrator\src\FluentMigrator.Runner\Processors\SQLite\SQLiteProcessor.cs:47

at FluentMigrator.Runner.VersionLoader.get_AlreadyCreatedVersionTable () [0x00000] in C:\Users\Mark\Source\Repos\fluentmigrator\src\FluentMigrator.Runner\VersionLoader.cs:124

at FluentMigrator.Runner.VersionLoader.LoadVersionInfo () [0x00028] in C:\Users\Mark\Source\Repos\fluentmigrator\src\FluentMigrator.Runner\VersionLoader.cs:160

at FluentMigrator.Runner.VersionLoader..ctor (FluentMigrator.Runner.IMigrationRunner runner, FluentMigrator.Infrastructure.IAssemblyCollection assemblies, FluentMigrator.IMigrationConventions conventions) [0x00077] in C:\Users\Mark\Source\Repos\fluentmigrator\src\FluentMigrator.Runner\VersionLoader.cs:50

at FluentMigrator.Runner.MigrationRunner..ctor (FluentMigrator.Infrastructure.IAssemblyCollection assemblies, FluentMigrator.Runner.Initialization.IRunnerContext runnerContext, FluentMigrator.IMigrationProcessor processor) [0x00167] in C:\Users\Mark\Source\Repos\fluentmigrator\src\FluentMigrator.Runner\MigrationRunner.cs:102

at FluentMigrator.Runner.MigrationRunner..ctor (System.Reflection.Assembly assembly, FluentMigrator.Runner.Initialization.IRunnerContext runnerContext, FluentMigrator.IMigrationProcessor processor) [0x00000] in C:\Users\Mark\Source\Repos\fluentmigrator\src\FluentMigrator.Runner\MigrationRunner.cs:72

at NzbDrone.Core.Datastore.Migration.Framework.MigrationController.Migrate (System.String connectionString, NzbDrone.Core.Datastore.Migration.Framework.MigrationContext migrationContext) [0x000b5] in C:\projects\lidarr\src\NzbDrone.Core\Datastore\Migration\Framework\MigrationController.cs:58

at NzbDrone.Core.Datastore.DbFactory.CreateMain (System.String connectionString, NzbDrone.Core.Datastore.Migration.Framework.MigrationContext migrationContext) [0x0000b] in C:\projects\lidarr\src\NzbDrone.Core\Datastore\DbFactory.cs:122 is corrupt, restore from backup if available. See: https://github.com/Lidarr/Lidarr/wiki/FAQ#i-am-getting-an-error-database-disk-image-is-malformed

at NzbDrone.Core.Datastore.DbFactory.CreateMain (System.String connectionString, NzbDrone.Core.Datastore.Migration.Framework.MigrationContext migrationContext) [0x00045] in C:\projects\lidarr\src\NzbDrone.Core\Datastore\DbFactory.cs:133

at NzbDrone.Core.Datastore.DbFactory.Create (NzbDrone.Core.Datastore.Migration.Framework.MigrationContext migrationContext) [0x00027] in C:\projects\lidarr\src\NzbDrone.Core\Datastore\DbFactory.cs:81

at NzbDrone.Core.Datastore.DbFactory.Create (NzbDrone.Core.Datastore.Migration.Framework.MigrationType migrationType) [0x00000] in C:\projects\lidarr\src\NzbDrone.Core\Datastore\DbFactory.cs:69

at NzbDrone.Core.Datastore.DbFactory.RegisterDatabase (NzbDrone.Common.Composition.IContainer container) [0x00000] in C:\projects\lidarr\src\NzbDrone.Core\Datastore\DbFactory.cs:47

at NzbDrone.Host.NzbDroneServiceFactory.Start () [0x00037] in C:\projects\lidarr\src\NzbDrone.Host\ApplicationServer.cs:60

at NzbDrone.Host.Router.Route (NzbDrone.Host.ApplicationModes applicationModes) [0x0007f] in C:\projects\lidarr\src\NzbDrone.Host\Router.cs:55

at NzbDrone.Host.Bootstrap.Start (NzbDrone.Host.ApplicationModes applicationModes, NzbDrone.Common.EnvironmentInfo.StartupContext startupContext) [0x0003d] in C:\projects\lidarr\src\NzbDrone.Host\Bootstrap.cs:78

at NzbDrone.Host.Bootstrap.Start (NzbDrone.Common.EnvironmentInfo.StartupContext startupContext, NzbDrone.Host.IUserAlert userAlert, System.Action`1[T] startCallback) [0x00075] in C:\projects\lidarr\src\NzbDrone.Host\Bootstrap.cs:41

at NzbDrone.Console.ConsoleApp.Main (System.String[] args) [0x00029] in C:\projects\lidarr\src\NzbDrone.Console\ConsoleApp.cs:38

 

 

2018-09-17 19:34:05,427 INFO success: lidarr entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)

2018-09-17 19:34:05,436 DEBG 'lidarr' stdout output:

Press enter to exit...

 

2018-09-17 19:34:06,436 DEBG 'lidarr' stdout output:

Non-recoverable failure, waiting for user intervention...

 

From <https://ba38b4426689c3df9029cd275e6e37518af21f76.unraid.net/plugins/dynamix.docker.manager/include/Events.php?action=log&container=0e75fe0edf53&title=Log%20for:%20binhex-lidarr>

 

 

NAS Box.png

MS Box.png

Lidarr Log.png

Edited by Do2a-2d
Link to comment
14 hours ago, Do2a-2d said:

[v0.3.1.471] NzbDrone.Core.Datastore.CorruptDatabaseException: Lidarr failed to start: Database file: System.Data.SQLite.SQLiteException (0x80004005): disk I/O error

disk I/O error

i would say you have some corruption of the lidarr database, and seeing that your problems seem to be affecting more than one container, i would guess that you may have corruption of the docker image file (loopback mounted image) or maybe even possibly corruption of your entire cache drive.

 

Link to comment
4 minutes ago, binhex said:

i would say you have some corruption of the lidarr database, and seeing that your problems seem to be affecting more than one container, i would guess that you may have corruption of the docker image file (loopback mounted image) or maybe even possibly corruption of your entire cache drive.

 

As I have listed above, the steps I have taken so far to mitigate the possibility of a faulty array:

 

  1. Deleted the docker image file - multiple times
  2. Deleted the appdata folder - multiple times
  3. Removed the two new nvme M.2 drives, swapped slots, reformatted the cache - 2 times
  4. The identical problem persists on more than 1 physical machine.  Please see original post - the same error on a second machine that is solely used as a NAS and never had any other docker installed except Krusader.

As of yesterday, I am getting the same result on Linuxserver.io containers for Radarr and Sonarr which leads me to believe that either some file that the docker image is pulling is corrupted or there are corrupted files on the flash drive that persist after docker image and appdata are deleted.  Not sure if I remember whether or not the appdata and the docker config data reside in the same directory for your dockers.  Is that a possible scenario?

 

Thanks.

 

 

 

 

 

 

 

 

Link to comment
3 hours ago, Do2a-2d said:

As of yesterday, I am getting the same result on Linuxserver.io containers

Please don't post to multiple threads for the same problem. That is known as crossposting, and it has been considered a bad thing on messaging boards since before the World Wide Web.

 

One reason it isn't a good thing to do is because there is no way to coordinate the responses in the multiple threads. So you could have some people, sometimes going to a lot of trouble to diagnose or research your problem, responding on one thread, completely unaware that someone else has already duplicated their effort on the other thread.

 

 

Link to comment
18 hours ago, Do2a-2d said:

either some file that the docker image is pulling is corrupted or there are corrupted files on the flash drive that persist after docker image and appdata are deleted.  Not sure if I remember whether or not the appdata and the docker config data reside in the same directory for your dockers.  Is that a possible scenario?

 

its possible that you are getting corruption when pulling down the image, i can assure you the image itself is not corrupted (more on that in a min). the only files to exist on the flash drive is the xml templates for the docker containers, this simply contains configuration for the docker container, such as volume mappings, ports etc, it doesn't contain any application data, so blowing away all the files/folders as defined by /config on your host side will mean a complete wipe of all configuration for that application, there are no other locations for config files.

 

so whats causing this, well as you have already done a wipe of the docker image file and re formatted your cache drive, the only other possibility that could be causing corruption is RAM, have you tried running memtest on your system recently?, if not then i would def give this a go, its part of unraid and can be accessed at boot time via the unraid boot menu, let it run for at least 2 full cycles.

 

one last thing to note, marvell controllers can cause issues, watch out for that!, not sure which controller your cache drive is plugged into but it might be worth moving it to another controller if possible.

Link to comment
Just now, CHBMB said:

@binhex He's crossposted in our thread and I wonder if it's an issue with sqlite and the FUSE fs. Hasn't responded yet to my post. Just a heads up and illustrates @trurls point about crossposting quite nicely...

Sent from my Mi A1 using Tapatalk
 

 

ahh a good point YES fuse i forgot about that old chestnut, hmm i wish the default host path wasnt /mnt/user for docker on unraid, ho hum, thanks for the heads up, lets hope its just that.

Link to comment
20 hours ago, trurl said:

Please don't post to multiple threads for the same problem. That is known as crossposting, and it has been considered a bad thing on messaging boards since before the World Wide Web.

 

One reason it isn't a good thing to do is because there is no way to coordinate the responses in the multiple threads. So you could have some people, sometimes going to a lot of trouble to diagnose or research your problem, responding on one thread, completely unaware that someone else has already duplicated their effort on the other thread.

 

 

Right.  Sorry about that.  Since the repositories have separate support pages I did not know whether the support requests are cross referenced.  Because I use the binhex containers, and upon trying the Linuxserver.io docker encountered the same error, I thought I should let them know also about a possible file corruption issue.

 

Didn't know.  My bad!

Link to comment
5 hours ago, binhex said:

so whats causing this, well as you have already done a wipe of the docker image file and re formatted your cache drive, the only other possibility that could be causing corruption is RAM, have you tried running memtest on your system recently?, if not then i would def give this a go, its part of unraid and can be accessed at boot time via the unraid boot menu, let it run for at least 2 full cycles.

 

Ok. Can try.  However everything else running on both servers is super stable.  When building the machine I ran memtest for a solid 24 hours - no errors.

 

Link to comment
5 hours ago, CHBMB said:

He's crossposted in our thread and I wonder if it's an issue with sqlite and the FUSE fs. Hasn't responded yet to my post.

@CHBMB  I have not received any post from you.

 

I did see something about SQLite in the error logs but did not save those logs.  I don't know any Linux and am new to Unraid so don't know what that means.  But see my response to binhex below regarding path for config files.

 

Thanks for all your support.

Link to comment
5 hours ago, binhex said:

 

ahh a good point YES fuse i forgot about that old chestnut, hmm i wish the default host path wasnt /mnt/user for docker on unraid, ho hum, thanks for the heads up, lets hope its just that.

I am sorry but I do not know what that means. 

 

This is what I did do last night...

On all the dockers I changed the path for the config file to /mnt/cache/appdata/xyz_container.  This brought up the web UI for

 

Binhex-radarr

Binhex-plexpass

Binhex-lidarr

 

Though as mentioned by Binhex above, everything has reverted to "factory settings"

 

This did NOT bring up the web UI for Binhex-sonarr.  I thought my pfSense was blocking something so fiddled with that side.  In the end I assigned a static IP to the binhex-sonarr docker from within the docker settings and the web UI does come up on the new IP address.

 

I don't know it sonarr will now have issues talking to the other dockers that use the host IP.  Am happy to try anything that will recreate the original settings so that I don't have to go through the setup process again.

 

Thank you all for all your help.

 

 

 

 

Link to comment
  • 3 months later...

Hi, I'm getting the following error persistent in all logs:

 

Quote

[Error] DownloadedTracksImportService: Import failed, path does not exist or is not accessible by Lidarr: /data/complete/

 

I believe my mappings are correct:

 

29OWlyj.png

 

Internal Lidarr log (many like this):

19-1-7 21:20:10.1|Error|DownloadedTracksImportService|Import failed, path does not exist or is not accessible by Lidarr: /data/complete/Stevie_Ray_Vaughan_And_Double_Trouble-Texas_Flood-(Legacy_Edition)-2CD-2013-404

Link to comment
12 hours ago, mcjfauser said:

Hi, I'm getting the following error persistent in all logs:

 

 

I believe my mappings are correct:

 

29OWlyj.png

 

Internal Lidarr log (many like this):

19-1-7 21:20:10.1|Error|DownloadedTracksImportService|Import failed, path does not exist or is not accessible by Lidarr: /data/complete/Stevie_Ray_Vaughan_And_Double_Trouble-Texas_Flood-(Legacy_Edition)-2CD-2013-404

ok and how have you configured lidarr?, im assuming you have it pointing at '/data/complete/' right?, if so does '/mnt/user/downloads/complete/' exist on unraid?

Edited by binhex
Link to comment
11 hours ago, binhex said:

ok and how have you configured lidarr?, im assuming you have it pointing at '/data/complete/' right?, if so does '/mnt/user/downloads/complete/' exist on unraid?

Thank you for the response! 

 

This is how I have it configured:

 

AOIRn8a.png

 

 

It doesn't let me choose a path that doesn't exist? Also, that's how my other dockers have been functioning perfectly for a while. 

 

If I look in Krusader, the directory is Root > media > user > downloads > complete.

Link to comment
11 hours ago, mcjfauser said:

Thank you for the response! 

 

This is how I have it configured:

 

AOIRn8a.png

 

 

It doesn't let me choose a path that doesn't exist? Also, that's how my other dockers have been functioning perfectly for a while. 

 

If I look in Krusader, the directory is Root > media > user > downloads > complete.

thats a screenshot of how the container is configured, what i am interested in is a screenshot of how you have configure the web ui for lidarr, in particular any references to /data

Link to comment
  • 1 month later...

Great docker so far.  Thank you much for creating it.  Is there any thought of brining official music videos into this?  Sort of like Bazarr does with subtitle for TV Shows and Movies?  Would be great if when playing the music through Plex, if the official music video was available, i would play it on your device/tv.  Or does anyone know if the is a docker application that would work with plex for this?

Link to comment
  • 1 month later...

Hi Guys

  I finally almost got all my system running 100%...apart from the final bit of Lidarr.  I use SABnzbd, Radarr, Sonarr and Lidarr - all from Binhex as I was advised its best to stick to same dockers.

In Radar and Sonarr the tv series and movies are cleaned up of rubbish files renamed and moved from downloads complete folder to the relevant Media plex folder, unfortunately, all music downloads are left in Complete downloads music, with all the rubbish files left in the folder. 

the paths in the Lidarr edit setup are same as the other two dockers.

Please help me with what has been a steep learning curve.

Thanks

K

Link to comment
  • 2 weeks later...

Love your dockers...have been using the delugevpn docker for quite a while.

 

I am having an issue similar to mcjfauser.  I have two download clients setup in lidarr - Deluge and SABnzdb.  SABnzdb is setup with a category of music, which is adds the file to the subdirectory of the local mapping of /Completed.  However, in Deluge, it first goes into /Incompletes, and then I have the label plugin move it to the /Completed/Music folder after the download completes.  The files downloaded from SABnzbd get imported into lidarr fine, but I can't get anything from Deluge to come over.  As you can see, I have tried several different mappings to get this to work.  Any suggestions without having to redo my setup in Deluge? 

 

image.thumb.png.a32ade4d9942e956ee0ac3a73b0b433d.png

Edited by scbuckeye75
Unhide post
Link to comment

In response to your report of your own post. Your post was hidden because you had not yet been approved for posting on the forum. We get a lot of spammers so we have to approve the first post of any user.

 

2 hours ago, scbuckeye75 said:

I am having an issue similar to mcjfauser. 

Did you see the response to mcjfauser?

 

2 hours ago, scbuckeye75 said:

I have tried several different mappings

Do you understand volume mapping? Some of those seem like a shot in the dark.

 

Since I don't use any of those containers, I will just direct you to the Docker FAQ and let others help you with the details.

 

https://forums.unraid.net/topic/57181-real-docker-faq/

 

This in particular might be relevant:

 

https://forums.unraid.net/topic/57181-real-docker-faq/?page=2#comment-566086

 

Link to comment

Thanks for the response and letting me know about the reason my post was hidden.

 

4 hours ago, trurl said:

Did you see the response to mcjfauser?

Yes, I did, and I do not see where in the GUI to make those settings.

4 hours ago, trurl said:

Do you understand volume mapping? Some of those seem like a shot in the dark.

Yes, I understand volume mappings.  I was trying several different things because I could not get it to work.  I normally do not have all of those volume mappings.  I cannot find in GUI where you set the /download directory for each download client.

 

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.