{"action":"opened","issue":{"url":"https://api.github.com/repos/bokeh/bokeh/issues/4280","repository_url":"https://api.github.com/repos/bokeh/bokeh","labels_url":"https://api.github.com/repos/bokeh/bokeh/issues/4280/labels{/name}","comments_url":"https://api.github.com/repos/bokeh/bokeh/issues/4280/comments","events_url":"https://api.github.com/repos/bokeh/bokeh/issues/4280/events","html_url":"https://github.com/bokeh/bokeh/issues/4280","id":153023178,"number":4280,"title":"Unable to render additional axis in callback","user":{"login":"copperwire","id":13903438,"avatar_url":"https://avatars.githubusercontent.com/u/13903438?v=3","gravatar_id":"","url":"https://api.github.com/users/copperwire","html_url":"https://github.com/copperwire","followers_url":"https://api.github.com/users/copperwire/followers","following_url":"https://api.github.com/users/copperwire/following{/other_user}","gists_url":"https://api.github.com/users/copperwire/gists{/gist_id}","starred_url":"https://api.github.com/users/copperwire/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/copperwire/subscriptions","organizations_url":"https://api.github.com/users/copperwire/orgs","repos_url":"https://api.github.com/users/copperwire/repos","events_url":"https://api.github.com/users/copperwire/events{/privacy}","received_events_url":"https://api.github.com/users/copperwire/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2016-05-04T14:17:36Z","updated_at":"2016-05-04T14:17:36Z","closed_at":null,"body":"Hi! \r\n\r\nOn bokeh version `0.12.0dev5` I've been trying to add an additional axis to a figure in a callback. \r\nWhile it seems that the code in the callback is executed, neither the update expected from applying a factor of 1e10 to the line nor the addition of an extra axis is observed. \r\n\r\nWhen the `.on_change()` is triggered the server outputs\r\n\r\n`JSON had attr 'y_range_name' on obj <bokeh.models.glyphs.Line object at 0x7f39276792e8>, which is a client-only or invalid attribute that shouldn't have been sent`\r\n\r\nas well as the same message with  \"x_range_name\" a large number of times.\r\n\r\nThis is the script I've used to try and troubleshoot the issue:\r\n```\r\nfrom bokeh.plotting import figure, curdoc\r\nfrom bokeh.models import HoverTool, TapTool, BoxZoomTool, BoxSelectTool, PreviewSaveTool, ResetTool\r\nfrom bokeh.models.widgets import Panel, Tabs, TextInput, RadioGroup\r\nfrom bokeh.models import Range1d, LogAxis, LinearAxis\r\nfrom bokeh.client import push_session\r\nfrom bokeh.models.sources import ColumnDataSource\r\nfrom bokeh.io import vform, hplot\r\nfrom bokeh.palettes import Spectral11\r\n\r\nimport numpy as np\r\n\r\n\r\nx = np.linspace(-2*np.pi, 2*np.pi, 200)\r\ny = 2*x**2 + 7/4.*x - 4\r\n\r\na = ColumnDataSource(dict(x = x, y = y, label = [\"Second degree equation\"]*len(x)))\r\n\r\nfigure_obj = figure(plot_width = 1000, plot_height = 800, title = \"these are polynominals\")\r\nline_render_one = figure_obj.line(\"x\", \"y\", source = a, line_width = 2)\r\n\r\ndef update_title(new, source, figure_obj_local, line):\r\n\r\n\tactive_source = source\r\n\tline_render = line\r\n\tfactor = float(new)\r\n\r\n\tx = np.array(active_source.data[\"x\"])\r\n\ty = factor*np.array(active_source.data[\"y\"])\r\n\r\n\tfigure_obj_local.extra_y_ranges =  {\"second_y\": Range1d(start = np.amin(y),\r\n\t\t\t\t\t\tend = np.amax(y))}\r\n\tfigure_obj_local.add_layout(LogAxis(y_range_name = \"second_y\", axis_label = \"Real large\"), \"right\")\r\n\t\r\n\tline_render.data_source = ColumnDataSource()\r\n\r\n\tactive_source.data = dict(x = x, y = y)\r\n\r\n\tnewline = figure_obj_local.line(\"x\", \"y\", source = active_source, y_range_name = \"second_y\")\r\n\r\n\tline_render_one = newline\r\n\r\ntext = TextInput(title=\"float\", value='factor to multiply signal')\r\n\r\ntext.on_change('value', lambda attr, old, new,  source = a , figure = figure_obj, \r\n\t\t\t\tline = line_render_one: \r\n\t\t\t\tupdate_title(new, source, figure, line))\r\n\r\nconcat = Panel(child = hplot(figure_obj, text), title = \"Polynominals\")\r\n\r\nsession = push_session(curdoc())\r\nsession.show()\r\nsession.loop_until_closed()\r\n```\r\n"}}